home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / dif-pcks.lha / DIF-PACKSOURCE / pack.S < prev    next >
Encoding:
Text File  |  2001-01-02  |  48.0 KB  |  2,664 lines

  1. algu:
  2.     bra.w    beginning
  3. P50_data    incbin    "wdh0:music/pack/p50.paranormaalit aivot"
  4.  
  5. fade  = 0    ;0 = normal
  6.         ;1 = use master volume
  7. CIA = 0        ;0 = disabled
  8.         ;1 = enabled
  9. system = 0    ;0 = killer
  10.         ;1 = friendly
  11. channels = 4    ;amount of channels to be played
  12.  
  13. use = -1     ;The Usecode
  14.  
  15.     include Player.i
  16.  
  17. Plane_height=75
  18. Plane_width2 = 44
  19. Plane_width = 42
  20. Wait_time = 2*50
  21. N_of_Planes=3
  22. Plane_Size=10240+2048
  23.  
  24. beginning:
  25.  
  26.     move.l    4,a5
  27.     move.l    156(a5),a5
  28.     move.l    38(a5),d0
  29.  
  30.     lea    oldcop(pc),a6
  31.     move.l    d0,(a6)
  32.     
  33.     lea    $dff000,a6
  34.  
  35.     lea    filet(pc),a1
  36.     lea    file1(pc),a2
  37.     move.l    a2,d0
  38.     move.l    d0,(a1)+
  39.     lea    file2(pc),a2
  40.     move.l    a2,d0
  41.     move.l    d0,(a1)+
  42.     lea    file3(pc),a2
  43.     move.l    a2,d0
  44.     move.l    d0,(a1)+
  45.     lea    file4(pc),a2
  46.     move.l    a2,d0
  47.     move.l    d0,(a1)+
  48.     lea    file5(pc),a2
  49.     move.l    a2,d0
  50.     move.l    d0,(a1)+
  51.     lea    file6(pc),a2
  52.     move.l    a2,d0
  53.     move.l    d0,(a1)+
  54.     lea    file7(pc),a2
  55.     move.l    a2,d0
  56.     move.l    d0,(a1)+
  57.     lea    file8(pc),a2
  58.     move.l    a2,d0
  59.     move.l    d0,(a1)+
  60.     lea    file9(pc),a2
  61.     move.l    a2,d0
  62.     move.l    d0,(a1)+
  63.     lea    file0(pc),a2
  64.     move.l    a2,d0
  65.     move.l    d0,(a1)+
  66.     
  67.     lea    logo(pc),a1
  68.     move.l    a1,d0
  69.     lea    planes1(pc),a1
  70.     moveq    #3,d7
  71. mg_l:    move.w    d0,6(a1)
  72.     swap.w    d0
  73.     move.w    d0,2(a1)
  74.     swap.w    d0
  75.     add.l    #$aa8,d0
  76.     add.l    #$8,a1
  77.     dbf    d7,mg_l
  78.     
  79.     lea    tausta(pc),a2
  80.     lea    planes0(pc),a1
  81.     move.l    a2,d0
  82.     move.w    d0,6(a1)
  83.     swap.w    d0
  84.     move.w    d0,2(a1)
  85.     swap.w    d0
  86.     lea    planes2(pc),a1
  87.     add.l    #$2c*103,d0
  88.     move.w    d0,6(a1)
  89.     swap.w    d0
  90.     move.w    d0,2(a1)
  91.     swap.w    d0
  92.     lea    planes3(pc),a1
  93.     add.l    #$2c*98,d0
  94.     move.w    d0,6(a1)
  95.     swap.w    d0
  96.     move.w    d0,2(a1)
  97.     swap.w    d0
  98.     
  99.     lea    scrpl(pc),a1
  100.     move.l    a1,d0
  101.     lea    scplane(pc),a1
  102.     move.w    d0,6(a1)
  103.     swap.w    d0
  104.     move.w    d0,2(a1)
  105.  
  106.     lea    scrf(pc),a1
  107.     move.l    a1,d0
  108.     lea    sfpl(pc),a1
  109.     move.w    d0,6(a1)
  110.     swap.w    d0
  111.     move.w    d0,2(a1)
  112.  
  113.     bsr    typemenu
  114.     
  115.     lea    safe(pc),a1
  116.  
  117.     move.w    $1c(a6),(a1)+
  118.     move.w    #$3fff,$9a(a6)
  119.     move.w    $2(a6),(a1)+
  120.     move.w    #%1000011111111111,$96(a6)
  121.     move.w    #%0000000000110000,$96(a6)
  122.  
  123.     lea    copl(pc),a1
  124.     move.l    a1,$80(a6)
  125.  
  126.     lea    P50_data(pc),a0
  127.     sub.l    a1,a1
  128.     moveq    #0,d0        ;Auto Detect
  129.  
  130.     bsr.w    _apu1                ;laita bsr.s
  131. ;    jsr    P50_motuuli+P50_InitOffset
  132.  
  133. l0    cmp.b    #-1,$6(a6)
  134.     bne.s    l0
  135. ;    move.w    #$222,$dff180
  136.     bsr    scroll
  137.     bsr    swap_planes
  138.     bsr    vector
  139.     bsr    animaze
  140.     bsr    colorani
  141.     bsr    mouse
  142.     bsr.w    _apu2
  143. ;    move.w    #$111,$dff180
  144. l0b    cmp.b    #-2,$6(a6)
  145.     bne.s    l0b
  146. l1    btst    #6,$bfe001
  147.     bne.s    l0
  148.  
  149.     bsr.w    _apu3                ;laita bsr.s
  150. ;    jsr    P50_motuuli+P50_EndOffset
  151.  
  152.     lea    safe(pc),a1
  153.     move.w    2(a1),d0
  154.     or.w    #$8000,d0
  155.     move.w    d0,$96(a6)
  156.     move.w    (a1),d0
  157.     or.w    #$8000,d0
  158.     move.w    d0,$9a(a6)
  159.     lea    oldcop(pc),a6
  160.     move.l    (a6),d0
  161.     move.l    d0,$dff080
  162.     move.l    #0,d0
  163.  
  164.  
  165.     move.l    #0,d0
  166.     lea    dosname(pc),a1
  167.     move.l    4,a6
  168.     jsr    -$0228(a6)
  169.     move.l    d0,a6
  170.  
  171.  
  172. loadinggi:
  173.     lea    filet(pc),a1
  174.     move.l    #0,d0
  175.     move.b    kohta(pc),d0
  176.     muls    #4,d0
  177.     add.l    d0,a1
  178.     move.l    (a1),d1
  179.     move.l    #0,d2
  180.     move.l    #0,d3
  181.     jsr    -$00de(a6)
  182.     move.l    #0,d0
  183.     rts
  184.  
  185.  
  186. mouse:    lea    mouse_dat(pc),a1
  187.     move.w    $dff00a,d1
  188.     and.w    #$ff00,d1
  189.     ror.w    #8,d1
  190. testay:    cmp.w    6(a1),d1
  191.     beq.s    mouseende
  192.     move.w    6(a1),d2
  193.     move.w    d1,6(a1)
  194.     sub.b    d2,d1
  195.     ext.w    d1
  196.     move.w    2(a1),d2
  197.     add.w    d1,d2
  198.     cmp.w    14(a1),d2
  199.     bmi.s    ysuurenee1
  200.     move.w    14(a1),d2
  201. ysuurenee1:
  202.     cmp.w    12(a1),d2
  203.     bpl.s    ysuurenee2
  204.     move.w    12(a1),d2
  205. ysuurenee2:
  206.     move.w    d2,2(a1)
  207. mouseende:
  208.  
  209. set:    lea    mousey(pc),a1
  210.     lea    kohta(pc),a3
  211.     move.w    (a1),d0
  212.     lea    k_set(pc),a2
  213.     cmp.w    #19*2,d0
  214.     bmi.s    _10a
  215.     move.b    #1,9(a2)
  216.     move.w    #-1,d0
  217.     move.b    #09,(a3)
  218.     bra.s    _10b
  219. _10a:    move.b    #0,9(a2)
  220. _10b:        
  221.     cmp.w    #17*2,d0
  222.     bmi.s    _09a
  223.     move.b    #1,8(a2)
  224.     move.w    #-1,d0
  225.     move.b    #08,(a3)
  226.     bra.s    _09b
  227. _09a:    move.b    #0,8(a2)
  228. _09b:        
  229.     cmp.w    #15*2,d0
  230.     bmi.s    _08a
  231.     move.b    #1,7(a2)
  232.     move.w    #-1,d0
  233.     move.b    #07,(a3)
  234.     bra.s    _08b
  235. _08a:    move.b    #0,7(a2)
  236. _08b:        
  237.     cmp.w    #13*2,d0
  238.     bmi.s    _07a
  239.     move.b    #1,6(a2)
  240.     move.w    #-1,d0
  241.     move.b    #06,(a3)
  242.     bra.s    _07b
  243. _07a:    move.b    #0,6(a2)
  244. _07b:        
  245.     cmp.w    #11*2,d0
  246.     bmi.s    _06a
  247.     move.b    #1,5(a2)
  248.     move.w    #-1,d0
  249.     move.b    #05,(a3)
  250.     bra.s    _06b
  251. _06a:    move.b    #0,5(a2)
  252. _06b:        
  253.     cmp.w    #09*2,d0
  254.     bmi.s    _05a
  255.     move.b    #1,4(a2)
  256.     move.w    #-1,d0
  257.     move.b    #04,(a3)
  258.     bra.s    _05b
  259. _05a:    move.b    #0,4(a2)
  260. _05b:        
  261.     cmp.w    #07*2,d0
  262.     bmi.s    _04a
  263.     move.b    #1,3(a2)
  264.     move.w    #-1,d0
  265.     move.b    #03,(a3)
  266.     bra.s    _04b
  267. _04a:    move.b    #0,3(a2)
  268. _04b:        
  269.     cmp.w    #05*2,d0
  270.     bmi.s    _03a
  271.     move.b    #1,2(a2)
  272.     move.w    #-1,d0
  273.     move.b    #02,(a3)
  274.     bra.s    _03b
  275. _03a:    move.b    #0,2(a2)
  276. _03b:        
  277.     cmp.w    #03*2,d0
  278.     bmi.s    _02a
  279.     move.b    #1,1(a2)
  280.     move.w    #-1,d0
  281.     move.b    #01,(a3)
  282.     bra.s    _02b
  283. _02a:    move.b    #0,1(a2)
  284. _02b:        
  285.     cmp.w    #01*2,d0
  286.     bmi.s    _01a
  287.     move.b    #1,0(a2)
  288.     move.w    #-1,d0
  289.     move.b    #00,(a3)
  290.     bra.s    _01b
  291. _01a:    move.b    #0,0(a2)
  292. _01b:    cmp.w    #-1,d0
  293.     beq.s    kset
  294.     move.b    #1,0(a2)    
  295.     move.b    #00,(a3)
  296.  
  297.  
  298. kset:
  299.     lea    kcolor(pc),a1
  300.     lea    k_color(pc),a2
  301.     lea    k_set(pc),a3
  302.     moveq    #9,d7
  303. _debfi:    add.l    #$4,a1
  304.     cmp.b    #0,(a3)+
  305.     bne.s    white
  306.     move.w    (a2)+,2(a1)
  307.     move.w    (a2)+,6(a1)
  308.     add.l    #$8,a1
  309.     dbf    d7,_Debfi
  310.     rts
  311. white:    move.w    #$fff,2(a1)
  312.     move.w    #$eee,6(a1)
  313.     add.l    #$8,a1
  314.     add.l    #$4,a2
  315.     dbf    d7,_debfi
  316.     rts
  317.     
  318.     
  319. astral    dc.l    0
  320.  
  321. colorani:
  322.     move.l    astral(pc),d0
  323.     btst    #0,d0
  324.     beq.w    ca_o
  325.     btst    #1,d0
  326.     beq.w    ca_o
  327.     cmp.l    #400,d0
  328.     bpl.s    _n0
  329.     lea    blue(pc),a2
  330.     bra.s    ca_here
  331. _n0:    cmp.l    #800,d0
  332.     bpl.s    _n1
  333.     lea    red(pc),a2
  334.     bra.s    ca_here
  335. _n1:    cmp.l    #1200,d0
  336.     bpl.s    _n2
  337.     lea    green(pc),a2
  338.     bra.s    ca_here
  339. _n2:
  340.     lea    red2(pc),a2
  341.  
  342. ca_here:
  343.     lea    clrs(pc),a1
  344.     moveq.l    #11,d7
  345. colloop    move.w    (a1)+,d3
  346.     move.w    (a1),d3
  347.     move.w    (a2)+,d0
  348.     move.w    d0,d1
  349.     move.w    d1,d2
  350.     move.w    d3,d4
  351.     move.w    d4,d5
  352.     and.w    #$f,d0
  353.     and.w    #$f,d3
  354.     and.w    #$f0,d1
  355.     and.w    #$f0,d4
  356.     and.w    #$f00,d2
  357.     and.w    #$f00,d5
  358.     cmp.w    d0,d3
  359.     bmi.s    ohi1a
  360.     beq.s    ohi1
  361.     sub.w    #$1,d3
  362.     bra.s    ohi1
  363. ohi1a    add.w    #$1,d3        
  364. ohi1    cmp.w    d1,d4
  365.     bmi.s    ohi2a
  366.     beq.s    ohi2
  367.     sub.w    #$10,d4
  368.     bra.s    ohi2
  369. ohi2a    add.w    #$10,d4
  370. ohi2    cmp.w    d2,d5
  371.     bmi.s    ohi3a
  372.     beq.s    ohi3
  373.     sub.w    #$100,d5
  374.     bra.s    ohi3
  375. ohi3a    add.w    #$100,d5    
  376. ohi3    or.w    d3,d4
  377.     or.w    d4,d5
  378.     move.w    d5,(a1)+
  379.     dbf    d7,colloop
  380. ca_o    rts
  381.         
  382. animaze:
  383.     move.l    astral(pc),d0
  384.     cmp.l    #1600,d0
  385.     bmi.s    haaa
  386.     lea    astral(pc),a4
  387.     move.l    #0,(a4)
  388.     rts
  389. haaa    cmp.l    #1200,d0
  390.     bmi.s    haa2
  391.     bra.s    a_kuutio
  392. haa2    cmp.l    #800,d0
  393.     bmi.s    haa3
  394.     bra.s    a_kartio
  395. haa3    cmp.l    #400,d0
  396.     bpl.s    a_kolmio
  397.     bra.s    a_pallo
  398.  
  399. a_kolmio
  400.     lea    astral(pc),a4
  401.     add.l    #1,(a4)
  402.     lea    koords1(pc),a4
  403.     lea    kolmio(pc),a5
  404. hobs:    moveq    #41,d7
  405. dobs:    move.w    (a4),d1
  406.     cmp.w    (a5)+,d1
  407.     beq.s    a_daa
  408.     bpl.s    iso
  409.     add.w    #1,(a4)+
  410.     dbf    d7,dobs
  411.     rts
  412. iso    sub.w    #1,(a4)+
  413.     dbf    d7,dobs
  414.     rts
  415. a_daa:    move.w    (a4)+,d1
  416.     dbf    d7,dobs
  417.     rts
  418.  
  419. a_pallo
  420.     lea    astral(pc),a4
  421.     add.l    #1,(a4)
  422.     lea    koords1(pc),a4
  423.     lea    pallo(pc),a5
  424.     bra.s    hobs
  425. a_kuutio
  426.     lea    astral(pc),a4
  427.     add.l    #1,(a4)
  428.     lea    koords1(pc),a4
  429.     lea    kuutio(pc),a5
  430.     bra.s    hobs
  431. a_kartio
  432.     lea    astral(pc),a4
  433.     add.l    #1,(a4)
  434.     lea    koords1(pc),a4
  435.     lea    kartio(pc),a5
  436.     bra.s    hobs
  437.  
  438. scroll:
  439.     lea    scrbit(pc),a4
  440.     cmp.b    #0,(a4)
  441.     beq.s    newfont
  442.     sub.b    #1,(a4)
  443. _backs    lea    scrpl(pc),a1
  444. wsc:    btst    #14,$2(a6)
  445.     bne.s    wsc
  446.     move.l    a1,$50(a6)
  447.     sub.l    #1,a1
  448.     move.l    a1,$54(a6)
  449.     move.l    #-1,$44(a6)
  450.     move.l    #0,$64(a6)
  451.     move.w    #0,$42(a6)
  452.     move.w    #%1110100111110000,$40(a6)
  453.     move.w    #$2d6,$58(a6)
  454.     rts
  455. newfont:
  456.     move.b    #3,(a4)
  457.     lea    scrolltxt(pc),a3
  458.     move.l    smerkki(pc),d0
  459.     add.l    d0,a3
  460.     lea    scrpl(pc),a2
  461.     add.l    #$2b,a2
  462.     move.l    #0,d0
  463.     bsr    i_font
  464.     lea    smerkki(pc),a2
  465.     add.l    #1,(a2)
  466.     bra.s    _backs
  467.     
  468.     even
  469.     
  470. smerkki
  471.     dc.l    0
  472.  
  473. scrbit    dc.b    0
  474.     even
  475. safe    dc.w    0
  476. safed    dc.w    0
  477. oldcop    dc.l    0
  478.     dc.l    0
  479.     dc.l    0
  480.     
  481. dosname    dc.b    "dos.library",0
  482. kohta    dc.b    0
  483.     even
  484.         
  485. typemenu:
  486.     lea    menutxt(pc),a3
  487.     lea    pic6,a2
  488.     bsr    type_it
  489.     lea    menutxt(pc),a3
  490.     lea    pic6,a2
  491.     add.l    #$3000,a2
  492.     bsr    type_it
  493.     lea    menutxt(pc),a3
  494.     lea    pic6,a2
  495.     add.l    #$6000,a2
  496.     bsr    type_it
  497.     lea    menutxt(pc),a3
  498.     lea    pic7,a2
  499.     bsr    type_it
  500.     lea    menutxt(pc),a3
  501.     lea    pic7,a2
  502.     add.l    #$3000,a2
  503.     bsr    type_it
  504.     lea    menutxt(pc),a3
  505.     lea    pic7,a2
  506.     add.l    #$6000,a2
  507.     bsr    type_it
  508.     rts    
  509. type_it
  510.     add.l    #$2c0,a2
  511.     add.l    #$16,a2
  512.     moveq    #12,d5
  513. i_2l    moveq    #20,d6
  514. i_1l    bsr    i_font
  515.     dbf    d6,i_1l
  516.     add.l    #$8*$2c,a2
  517.     add.l    #$17,a2
  518.     dbf    d5,i_2l
  519.     rts
  520.  
  521. i_font    lea    font(pc),a1
  522.     move.b    (a3)+,d0
  523.     cmp.b    #$ff,d0
  524.     beq.s    over_o
  525.     cmp.b    #$48,d0
  526.     bpl.s    i_rivi2
  527.     sub.b    #$20,d0
  528. i_back1    add    d0,a1
  529.     moveq.l    #6,d7
  530. i_loop1    move.b    (a1),(a2)
  531.     add.w    #$28,a1
  532.     add.w    #$2c,a2
  533.     dbf    d7,i_loop1
  534.     sub.w    #$7*$2c,a2
  535.     add.w    #1,a2
  536.     rts
  537. i_rivi2    lea    font+$168-$28(pc),a1
  538. ;    move.l    #font(pc)+$168-$28,a1
  539.     sub.b    #$48,d0
  540.     bra    i_back1    
  541. over_o:
  542.     lea    smerkki(pc),a2
  543.     move.l    #0,(a2)
  544.     rts
  545.  
  546. SWAP_PLANES
  547.     lea    show_planes(pc),a0    
  548.     lea    planes(pc),a1        
  549.                     
  550.     movem.l    (a0),d0/d1
  551.     exg    d0,d1    
  552.     movem.l    d0/d1,(a0)
  553.  
  554.     move.w    d0,6(a1)
  555.     swap.w    d0
  556.     move.w    d0,2(a1)
  557.     swap    d0
  558.     add.l    #plane_size,d0
  559.     move.w    d0,14(a1)
  560.     swap    d0
  561.     move.w    d0,10(a1)
  562.     swap    d0
  563.     add.l    #plane_size,d0
  564.     move.w    d0,22(a1)
  565.     swap    d0
  566.     move.w    d0,18(a1)    
  567.     rts
  568.     
  569. show_planes    dc.l    pic6
  570. work_planes    dc.l    pic7
  571.  
  572. Bpl1:    dc.w    -1,-1,0,0    
  573. Bpl2:    dc.w    -1,-1,0,0
  574. Bpl3:    dc.w    -1,-1,0,0
  575. Bpl4:    dc.w    -1,-1,0,0
  576.  
  577. ;CLEAR
  578.  
  579. clr:    cmp.w    #-1,(a1)    
  580.     bne.s    cleari        
  581.     cmp.w    #-1,2(a1)
  582.     bne.s    cleari
  583.     tst.w    4(a1)
  584.     bne.s    cleari
  585.     tst.w    6(a1)
  586.     bne.s    cleari
  587.     rts
  588.  
  589. cleari:    movem.w    (a1),d0/d1/d2/d3    
  590.     move.w    d1,d4
  591.     subq.w    #1,d1
  592.     mulu    #Plane_width2,d1
  593.     ext.l    d1
  594.     add.l    d1,a0
  595.     sub.w    d4,d3
  596.     addq.w    #2,d3
  597.     lsl.w    #6,d3    
  598.     
  599.     move.w    d0,d1        
  600.     lsr.w    #3,d0
  601.     ext.l    d0
  602.     add.l    d0,a0
  603.  
  604.     sub.w    d1,d2    
  605.     lsr.w    #4,d2    
  606.     addq.w    #2,d2
  607.     add.w    d2,d3
  608.  
  609.     move.w    #Plane_width2/2,d0
  610.     sub.w    d2,d0
  611.     add.w    d0,d0
  612.         
  613. clri:    btst    #14,2(a6)     
  614.     bne.s    clri    
  615.  
  616.     move.l    a0,$54(a6)
  617.     move.l    #$01000000,$40(a6)
  618.     move.w    d0,$66(a6)
  619.     move.w    d3,$58(a6)
  620.     rts
  621.  
  622. vector:
  623.     lea    $dff000,a6
  624.  
  625.     move.l    work_planes(pc),a0
  626.     lea    Bpl1(pc),a1
  627.     bsr.w    clr    
  628.  
  629. ;Y-AKSELI
  630.  
  631.     move.l    coords(pc),a5        
  632.     lea    sin(pc),a0        
  633.     lea    cos(pc),a1        
  634.     lea    z_coords(pc),a2        
  635.     lea    store(pc),a3        
  636. vector1:
  637.     move.w    ky(pc),d7
  638.     move.w    (a0,d7.w),d0    
  639.     move.w    d0,d4
  640.     move.w    (a1,d7.w),d1
  641.     move.w    d1,d5
  642.     
  643.     movem.w    (a5)+,d2/d3/d6    
  644.  
  645.     muls    d2,d1
  646.     muls    d6,d0
  647.     add.l    d1,d0
  648.     asr.l    #7,d0        
  649.  
  650.     muls    d2,d4        
  651.     muls    d6,d5        
  652.     sub.l    d4,d5
  653.     asr.l    #8,d5    
  654.     
  655. ;X-AKSELI
  656.     move.w    kx(pc),d7
  657.     move.w    (a0,d7.w),d2
  658.     move.w    d2,d6
  659.     move.w    (a1,d7.w),d1
  660.     move.w    d1,d7
  661.     
  662.     muls    d3,d1
  663.     muls    d5,d2
  664.     sub.l    d2,d1
  665.     asr.l    #7,d1    
  666.  
  667.     muls    d3,d6
  668.     muls    d5,d7
  669.     add.l    d6,d7
  670.     asr.l    #8,d7        
  671.     
  672. ;Z-AKSELI
  673.     move.w    kz(pc),d6
  674.     move.w    (a0,d6.w),d2
  675.     move.w    d2,d4
  676.     move.w    (a1,d6.w),d3
  677.     move.w    d3,d5
  678.     
  679.     muls    d0,d3
  680.     muls    d1,d2
  681.     sub.l    d2,d3
  682.  
  683.     muls    d0,d4
  684.     muls    d1,d5
  685.     add.l    d4,d5
  686.     
  687. ;PROJEKTIO
  688.     movem.w    x_pos(pc),d0/d1/d2    
  689.     move.w    d7,(a2)+
  690.     add.w    d2,d7
  691.     divs     d7,d3
  692.     add.w    d0,d3
  693.     move.w    d3,(a3)+    
  694.     
  695.     divs     d7,d5
  696.     add.w    d1,d5
  697.     move.w    d5,(a3)+
  698.             
  699.     cmp.w    #9999,(a5)        
  700.     bne.w    vector1
  701.  
  702.     move.l    work_planes(pc),a0
  703.     lea    Plane_Size(a0),a0
  704.     lea    Bpl2(pc),a1
  705.     bsr.w    clr            
  706.     bsr.w    rotate            
  707.     move.l    work_planes(pc),a0
  708.     lea    plane_size(a0),a0
  709.     lea    plane_size(a0),a0
  710.     lea    Bpl3(pc),a1
  711.     bsr.w    clr
  712.     
  713. ;COUNT DISTANCE
  714.     move.l    prefs(pc),a0        
  715.     lea    store(pc),a1        
  716.     lea    colly+2(pc),a3        
  717.     
  718. geti:    move.w    10(a0),d7
  719.     add.w    d7,d7
  720.     add.w    d7,d7
  721.     movem.w    (a1,d7.w),d0/d1        
  722.  
  723.     move.w    14(a0),d7
  724.     add.w    d7,d7
  725.     add.w    d7,d7
  726.     movem.w    (a1,d7.w),d2/d3    
  727.  
  728.     move.w    18(a0),d7
  729.     add.w    d7,d7
  730.     add.w    d7,d7
  731.     movem.w    (a1,d7.w),d4/d5        
  732.  
  733.     sub.w    d2,d4
  734.     move.w    d1,d6
  735.     sub.w    d3,d6
  736.     muls.w    d4,d6
  737.  
  738.     sub.w    d3,d5
  739.     sub.w    d2,d0
  740.     muls.w    d5,d0
  741.  
  742.     sub.l    d0,d6
  743.     tst.w    d6
  744.     bgt.s    safei
  745.     moveq    #0,d6    
  746.  
  747. safei    move.w    d6,4(a0)    
  748.  
  749.     add.w    6(a0),a0
  750.     cmp.w    #9999,(a0)    
  751.     bne.s    geti
  752.  
  753.     add.w    #2,a0
  754.  
  755. geti2:    move.w    10(a0),d7
  756.     add.w    d7,d7
  757.     add.w    d7,d7
  758.     movem.w    (a1,d7.w),d0/d1        
  759.  
  760.     move.w    14(a0),d7
  761.     add.w    d7,d7
  762.     add.w    d7,d7
  763.     movem.w    (a1,d7.w),d2/d3    
  764.  
  765.     move.w    18(a0),d7
  766.     add.w    d7,d7
  767.     add.w    d7,d7
  768.     movem.w    (a1,d7.w),d4/d5        
  769.  
  770.     sub.w    d2,d4
  771.     move.w    d1,d6
  772.     sub.w    d3,d6
  773.     muls.w    d4,d6
  774.  
  775.     sub.w    d3,d5
  776.     sub.w    d2,d0
  777.     muls.w    d5,d0
  778.  
  779.     sub.l    d0,d6
  780.     tst.w    d6
  781.     bgt.s    safei2
  782.     moveq    #0,d6    
  783.  
  784. safei2    move.w    d6,4(a0)    
  785.  
  786.     add.w    6(a0),a0
  787.     cmp.w    #9999,(a0)    
  788.     bne.s    geti2
  789.  
  790. ;COMPARE DISTANCE
  791. hops    move.l    prefs(pc),a1
  792.     lea    store(pc),a2
  793.     lea    oct(pc),a4
  794.  
  795.     move.l    #-1,$44(a6)
  796.     move.l    #-$8000,$72(a6)
  797.     move.w    #plane_width2,$60(a6)
  798.  
  799. Com_dist:
  800.     move.l    work_planes(pc),a0
  801.     tst.w    4(a1)
  802.     beq.L    variv
  803.     tst.w    2(a1)
  804.     beq.s    nexti
  805.  
  806.     btst    #0,3(a1)    
  807.     beq.s    nxti        
  808.     lea    bpl1(pc),a5    
  809.     bsr.w    lets_do_it    
  810. nxti    lea    plane_size(a0),a0
  811.     btst    #1,3(a1)
  812.     beq.s    nexti
  813. hop    lea    bpl2(pc),a5
  814.     bsr.w    lets_do_it    
  815.  
  816. nexti    add.w    6(a1),a1
  817.     cmp.w    #9999,(a1)
  818.     bne.s    com_dist
  819. ;
  820.     add.w    #2,a1
  821.  
  822. Com_dist2:
  823.     move.l    work_planes(pc),a0
  824.     lea    plane_size(a0),a0
  825.     lea    plane_size(a0),a0
  826.     tst.w    4(a1)
  827.     beq.s    nexti2
  828.     tst.w    2(a1)
  829.     beq.s    nexti2
  830.  
  831.     lea    bpl3(pc),a5    
  832.     bsr.w    lets_do_it    
  833.  
  834. nexti2    add.w    6(a1),a1
  835.     cmp.w    #9999,(a1)
  836.     bne.s    com_dist2
  837. ;
  838.     move.l    work_planes(pc),a0    
  839.     lea    Bpl1(pc),a1
  840.     bsr.w    Fill            
  841.     move.l    work_planes(pc),a0
  842.     lea    Plane_Size(a0),a0
  843.     lea    Bpl2(pc),a1
  844.     bsr.w    Fill            
  845.  
  846. ;
  847.     move.l    work_planes(pc),a0
  848.     lea    Plane_Size(a0),a0
  849.     lea    Plane_Size(a0),a0
  850.     lea    Bpl3(pc),a1
  851.     bsr.w    Fill
  852. ;
  853.     rts
  854.  
  855. variv    lea    plane_size(a0),a0
  856.     bra.s    hop
  857.  
  858.  
  859. ;DRAW LINES
  860.  
  861. lets_do_it:    
  862.     btst    #14,$2(a6)
  863.     bne.s    lets_do_it
  864.  
  865.     move.w    8(a1),d7
  866.     lea    10(a1),a3
  867.  
  868. draw:    move.l    #Plane_Width2,d5
  869.  
  870.     move.w    (a3)+,d4    
  871.     add.w    d4,d4        
  872.     add.w    d4,d4
  873.     move.w    (a2,d4.w),d0        
  874.     move.w    2(a2,d4.w),d1        
  875.     move.w    (a3)+,d4
  876.     add.w    d4,d4
  877.     add.w    d4,d4
  878.     move.w    (a2,d4.w),d2        
  879.     move.w    2(a2,d4.w),d3        
  880.  
  881.     cmp.w    (a5),d0            
  882.     bhi.s    nextii
  883.     move.w    d0,(a5)
  884. nextii:    
  885.     cmp.w    2(a5),d1        
  886.     bhi.s    next1i
  887.     move.w    d1,2(a5)
  888. next1i:    
  889.     cmp.w    4(a5),d0        
  890.     blo.s    next2i
  891.     move.w    d0,4(a5)
  892. next2i:    
  893.     cmp.w    6(a5),d1        
  894.     blo.s    next3i
  895.     move.w    d1,6(a5)
  896. next3i:                
  897.     cmp.w    d1,d3
  898.     bgt.s    line1
  899.     exg    d0,d2
  900.     exg    d1,d3
  901.     beq.s    out
  902. line1:    move.w    d1,d4
  903.     muls    d5,d4
  904.     move.w    d0,d5
  905.     add.l    a0,d4
  906.     asr.w    #3,d5
  907.     add.l    d5,d4
  908.     moveq    #0,d5
  909.     sub.w    d1,d3
  910.     sub.w    d0,d2
  911.     bpl.s    line2
  912.     moveq    #1,d5
  913.     neg.w    d2
  914. line2:    move.w    d3,d1
  915.     add.w    d1,d1
  916.     cmp.w    d2,d1
  917.     dbhi    d3,line3
  918. line3:    move.w    d3,d1
  919.     sub.w    d2,d1
  920.     bpl.s    line4
  921.     exg    d2,d3
  922. line4:    addx.w    d5,d5
  923.     add.w    d2,d2
  924.     move.w    d2,d1
  925.     sub.w    d3,d2
  926.     addx.w    d5,d5
  927.     and.w    #15,d0
  928.     ror.w    #4,d0
  929.     or.w    #$a4a,d0
  930. waitblt:btst    #6,2(a6)
  931.     bne.s    waitblt
  932.     move.w    d2,$52(a6)
  933.     sub.w    d3,d2
  934.     lsl.w    #6,d3
  935.     addq.w    #2,d3
  936.     move.w    d0,$40(a6)
  937.     move.b    (a4,d5.w),$43(a6)
  938.     move.l    d4,$48(a6)
  939.     move.l    d4,$54(a6)
  940.     movem.w    d1/d2,$62(a6)
  941.     move.w    d3,$58(a6)
  942. out:    dbf    d7,draw        
  943.     rts
  944.     
  945. ;FILL BITPLANES
  946.  
  947. Fill:    cmp.w    #-1,(a1)
  948.     bne.s    wfilli
  949.     cmp.w    #-1,2(a1)
  950.     bne.s    wfilli
  951.     tst.w    4(a1)
  952.     bne.s    wfilli
  953.     tst.w    6(a1)
  954.     bne.s    wfilli
  955.     rts
  956.  
  957. wfilli:    movem.w    (a1),d0/d1/d2/d3    
  958.     move.w    d3,d4
  959.     addq.l    #1,d3
  960.     mulu    #Plane_width2,d3
  961.     add.l    d3,a0
  962.     subq.l    #2,a0
  963.     
  964.     sub.w    d1,d4
  965.     addq.w    #1,d4
  966.     lsl.w    #6,d4
  967.  
  968.     move.w    d2,d3            
  969.     lsr.w    #3,d2
  970.     addq.w    #2,d2
  971.     ext.l    d2
  972.     add.l    d2,a0
  973.  
  974.     sub.w    d0,d3        
  975.     lsr.w    #4,d3        
  976.     addq.w    #2,d3
  977.     add.w    d3,d4
  978.  
  979.     move.w    #Plane_width2/2,d0
  980.     sub.w    d3,d0
  981.     add.w    d0,d0
  982.  
  983. filli:    btst    #14,$2(a6)
  984.     bne.s    filli
  985.  
  986.     move.l    a0,$50(a6)
  987.     move.l    a0,$54(a6)
  988.     move.l    #$09f00012,$40(a6)
  989.     move.l    #$ffffffff,$44(a6)
  990.     move.w    d0,$64(a6)
  991.     move.w    d0,$66(a6)
  992.     move.w    d4,$58(a6)
  993.     rts
  994.  
  995. ;ROTATE
  996.  
  997. rotate:    add.w    #X_angle*2,kx
  998.     cmp.w    #720,kx
  999.     blo.s    gee1
  1000.     move.w    #0,kx
  1001. gee1:    add.w    #Y_angle*2,ky
  1002.     cmp.w    #720,ky
  1003.     blo.s    gee2
  1004.     move.w    #0,ky
  1005. gee2:    add.w    #Z_angle*2,kz
  1006.     cmp.w    #720,kz
  1007.     blo.s    gee3
  1008.     move.w    #0,kz
  1009. gee3:    rts
  1010.  
  1011. oct:    dc.l    $3431353,$b4b1757   
  1012.             
  1013. colly:    dc.w    $0180,$0000,$0182,$0def,$0184,$0025,$0186,$0abc
  1014.     dc.w    $0188,$0014,$018a,$0def,$018c,$0025,$018e,$0abc
  1015.  
  1016.  
  1017. copl    dc.w    $01fc,$0000
  1018.     dc.w    $0100,$1000,$0102,$0000,$0108,$0000,$010a,$0000
  1019.     dc.w    $008e,$0510,$0090,$7ff0,$0092,$0030,$0094,$00d8
  1020. planes0    dc.w    $00e0,$0000,$00e2,$0000,$0180,$0222,$0182,$0000
  1021.     dc.w    $2e07,$fffe,$0100,$0000,$0180,$0000
  1022.     dc.w    $2f07,$fffe,$0180,$075f
  1023.     dc.w    $3107,$fffe,$0180,$0000,$0102,$0000
  1024.     dc.w    $0180,$0000,$0182,$0fff,$0184,$0eee,$0186,$0ddd
  1025.     dc.w    $0188,$0ccd,$018a,$0bbc,$018c,$0abb,$018e,$09ab
  1026.     dc.w    $0190,$089a,$0192,$0789,$0194,$0578,$0196,$0467
  1027.     dc.w    $0198,$0356,$019a,$0245,$019c,$0234,$019e,$0123
  1028. planes1    dc.w    $00e0,$0000,$00e2,$0000,$00e4,$0000,$00e6,$0000
  1029.     dc.w    $00e8,$0000,$00ea,$0000,$00ec,$0000,$00ee,$0000
  1030.     dc.w    $3207,$fffe,$0100,$4000,$0180,$0000
  1031.     dc.w    $6f07,$fffe,$0100,$0000,$0180,$0000,$0102,$0000
  1032.     dc.w    $7007,$fffe,$0180,$075f,$7207,$fffe,$0180,$0000
  1033.     dc.w    $7307,$fffe,$0100,$1000,$0180,$0222,$0182,$0000
  1034. planes2    dc.w    $00e0,$0000,$00e2,$0000
  1035.  
  1036.     dc.w    $7407,$fffe
  1037. planes    dc.w    $00e4,$0000,$00e6,$0000,$00e8,$0000,$00ea,$0000
  1038.     dc.w    $00ec,$0000,$00ee,$0000
  1039. clrs:    dc.w    $0184,$0abc,$0186,$09ab,$0188,$0025,$018a,$0014
  1040.     dc.w    $018c,$0def,$018e,$0cde,$0190,$0014,$0192,$0003
  1041.     dc.w    $0194,$0abc,$0196,$09ab,$0198,$0025,$019a,$0014
  1042.     dc.w    $019c,$09c4,$019e,$08b3
  1043.     dc.w    $7507,$fffe,$0100,$4000
  1044.  
  1045.     dc.w    $8507,$fffe,$019c,$000f,$019e,$000e
  1046.     dc.w    $8e07,$fffe,$019c,$010e,$019e,$000d
  1047.     dc.w    $9707,$fffe,$019c,$020d,$019e,$010c
  1048. kcolor:    
  1049.     dc.w    $a007,$fffe,$019c,$040b,$019e,$030a
  1050.     dc.w    $a907,$fffe,$019c,$050a,$019e,$0409
  1051.     dc.w    $b207,$fffe,$019c,$0609,$019e,$0508
  1052.     dc.w    $bb07,$fffe,$019c,$0708,$019e,$0607
  1053.     dc.w    $c407,$fffe,$019c,$0807,$019e,$0706
  1054.     dc.w    $cd07,$fffe,$019c,$0906,$019e,$0805
  1055.     dc.w    $d607,$fffe,$019c,$0a05,$019e,$0904
  1056.     dc.w    $df07,$fffe,$019c,$0b04,$019e,$0a03
  1057.     dc.w    $e807,$fffe,$019c,$0c03,$019e,$0b02
  1058.     dc.w    $f107,$fffe,$019c,$0d02,$019e,$0c01
  1059.  
  1060.     dc.w    $ffe1,$fffe
  1061.     dc.w    $0207,$fffe,$0100,$1000
  1062.     dc.w    $0807,$fffe,$0180,$0000,$0100,$0000
  1063.     dc.w    $0907,$fffe,$0180,$075f
  1064.     dc.w    $0b07,$fffe,$0180,$0000
  1065.     dc.w    $0d07,$fffe,$0100,$2000
  1066. scplane    dc.w    $00e0,$0000,$00e2,$0000,$0180,$0000,$0182,$0def
  1067. sfpl    dc.w    $00e4,$0000,$00e6,$0000,$0184,$0000,$0186,$0000
  1068.  
  1069.     dc.w    $0d37,$fffe
  1070.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1071.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1072.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1073.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1074.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1075.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1076.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1077.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1078.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1079.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1080.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1081.  
  1082.     dc.w    $0e37,$fffe
  1083.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1084.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1085.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1086.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1087.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1088.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1089.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1090.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1091.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1092.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1093.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1094.  
  1095.     dc.w    $0f37,$fffe
  1096.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1097.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1098.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1099.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1100.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1101.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1102.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1103.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1104.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1105.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1106.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1107.  
  1108.     dc.w    $1037,$fffe
  1109.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1110.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1111.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1112.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1113.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1114.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1115.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1116.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1117.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1118.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1119.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1120.  
  1121.     dc.w    $1137,$fffe
  1122.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1123.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1124.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1125.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1126.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1127.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1128.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1129.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1130.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1131.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1132.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1133.  
  1134.     dc.w    $1237,$fffe
  1135.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1136.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1137.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1138.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1139.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1140.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1141.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1142.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1143.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1144.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1145.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1146.  
  1147.     dc.w    $1337,$fffe
  1148.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1149.     dc.w    $0182,$00ff,$0182,$00ff,$0182,$00ff,$0182,$00ff
  1150.     dc.w    $0182,$00ff,$0182,$01ff,$0182,$01fe,$0182,$02fe
  1151.     dc.w    $0182,$02fd,$0182,$03fd,$0182,$03fc,$0182,$04fc
  1152.     dc.w    $0182,$04fb,$0182,$05fb,$0182,$05fa,$0182,$06fa
  1153.     dc.w    $0182,$06f9,$0182,$07f9,$0182,$07f8,$0182,$08f8
  1154.     dc.w    $0182,$08f7,$0182,$09f7,$0182,$09f6,$0182,$0af6
  1155.     dc.w    $0182,$0af5,$0182,$0bf5,$0182,$0bf4,$0182,$0cf4
  1156.     dc.w    $0182,$0cf3,$0182,$0df3,$0182,$0df2,$0182,$0ef2
  1157.     dc.w    $0182,$0ef1,$0182,$0ff1,$0182,$0ff0,$0182,$0ff0
  1158.     dc.w    $0182,$0ff0,$0182,$0ff0,$0182,$0ff0,$0182,$0def
  1159.  
  1160.     dc.w    $1407,$fffe,$0180,$0000,$0100,$0000
  1161.     dc.w    $1607,$fffe,$0180,$075f,$1807,$fffe,$0180,$0000
  1162.     dc.w    $1907,$fffe,$0100,$1000,$0180,$0222,$0182,$0000
  1163. planes3    dc.w    $00e0,$0000,$00e2,$0000
  1164.  
  1165.     dc.w    $ffff,$fffe,$ffff,$fffe    
  1166.  
  1167.  
  1168. k_color:
  1169.     dc.w    $040b,$030a,$050a,$0409,$0609,$0508,$0708,$0607
  1170.     dc.w    $0807,$0706,$0906,$0805,$0a05,$0904,$0b04,$0a03
  1171.     dc.w    $0c03,$0b02,$0d02,$0c01
  1172.  
  1173. k_set:    dc.b    1,0,0,0,0,0,0,0,0,0
  1174.  
  1175. blue:
  1176.     dc.w    $0abc,$09ab,$0025,$0014,$0def,$0cde,$0014,$0003
  1177.     dc.w    $0abc,$09ab,$0025,$0014
  1178. red:
  1179.     dc.w    $0520,$0410,$0cba,$0ba9,$0410,$0300,$0fed,$0edc
  1180.     dc.w    $0520,$0410,$0cba,$0ba9
  1181. green:
  1182.     dc.w    $0acb,$09ba,$0052,$0041,$0dfe,$0ced,$0041,$0030
  1183.     dc.w    $0acb,$09ba,$0052,$0041
  1184.  
  1185. red2:
  1186.     dc.w    $0f20,$0e10,$0cba,$0ba9,$0e10,$0d00,$0fed,$0edc
  1187.     dc.w    $0f20,$0e10,$0cba,$0ba9
  1188.  
  1189. mouse_dat:
  1190. mousex:    dc.w    0
  1191. mousey:    dc.w    0
  1192. mx:    dc.w    0
  1193. my:    dc.w    0
  1194. minx:    dc.w    0
  1195. maxx:    dc.w    0
  1196. miny:    dc.w    1
  1197. maxy:    dc.w    40
  1198.  
  1199. kx:        dc.w    0*2
  1200. ky:        dc.w    0*2
  1201. kz:        dc.w    0*2
  1202.  
  1203. x_pos:        dc.w    94
  1204. y_pos:        dc.w    73
  1205. dist2:        dc.w    1900
  1206.  
  1207. store:        blk.w    1000,0
  1208. z_coords:    blk.w    500,0
  1209.  
  1210. X_angle=3
  1211. Y_angle=4
  1212. Z_angle=1
  1213.  
  1214. prefs:    dc.l    obj1
  1215. coords:    dc.l    koords1
  1216.  
  1217. ;OBJECT
  1218.  
  1219.  
  1220. ;----------Object------------
  1221.  
  1222. OBJ1:    
  1223.     dc.w    00,01,00,4*4+10,03, 00,01,01,02,02,00,00,00
  1224.     dc.w    00,01,00,4*4+10,03, 00,03,03,04,04,00,00,00
  1225.  
  1226.     dc.w    00,01,00,4*4+10,03, 05,01,01,04,04,05,05,05
  1227.     dc.w    00,01,00,4*4+10,03, 05,06,06,07,07,05,05,05
  1228.  
  1229.     dc.w    00,01,00,4*4+10,03, 08,06,06,04,04,08,08,08
  1230.     dc.w    00,01,00,4*4+10,03, 08,03,03,09,09,08,08,08
  1231.  
  1232.     dc.w    00,01,00,4*4+10,03, 10,03,03,02,02,10,10,10
  1233.     dc.w    00,01,00,4*4+10,03, 10,11,11,09,09,10,10,10
  1234.  
  1235.     dc.w    00,01,00,4*4+10,03, 12,06,06,09,09,12,12,12
  1236.     dc.w    00,01,00,4*4+10,03, 12,11,11,07,07,12,12,12
  1237.  
  1238.     dc.w    00,01,00,4*4+10,03, 13,01,01,07,07,13,13,13
  1239.     dc.w    00,01,00,4*4+10,03, 13,11,11,02,02,13,13,13
  1240.     dc.w    9999
  1241.  
  1242.     dc.w    00,01,00,4*4+10,03, 00,04,04,01,01,00,00,00
  1243.     dc.w    00,01,00,4*4+10,03, 00,02,02,03,03,00,00,00
  1244.  
  1245.     dc.w    00,01,00,4*4+10,03, 05,07,07,01,01,05,05,05
  1246.     dc.w    00,01,00,4*4+10,03, 05,04,04,06,06,05,05,05
  1247.  
  1248.     dc.w    00,01,00,4*4+10,03, 08,04,04,03,03,08,08,08
  1249.     dc.w    00,01,00,4*4+10,03, 08,09,09,06,06,08,08,08
  1250.  
  1251.     dc.w    00,01,00,4*4+10,03, 10,02,02,11,11,10,10,10
  1252.     dc.w    00,01,00,4*4+10,03, 10,09,09,03,03,10,10,10
  1253.  
  1254.     dc.w    00,01,00,4*4+10,03, 12,07,07,06,06,12,12,12
  1255.     dc.w    00,01,00,4*4+10,03, 12,09,09,11,11,12,12,12
  1256.  
  1257.     dc.w    00,01,00,4*4+10,03, 13,07,07,11,11,13,13,13
  1258.     dc.w    00,01,00,4*4+10,03, 13,02,02,01,01,13,13,13
  1259.  
  1260.     dc.w    9999
  1261.  
  1262. ;objekti:         X    Y    Z
  1263.  
  1264. KOORDS1:
  1265.  
  1266.     dc.w    0000,0000,0220    ;0
  1267.     dc.w    -150,0150,0150    ;1
  1268.     dc.w    0150,0150,0150    ;2
  1269.     dc.w    0150,-150,0150    ;3
  1270.     dc.w    -150,-150,0150    ;4
  1271.     dc.w    -220,0000,0000    ;5
  1272.     dc.w    -150,-150,-150    ;6
  1273.     dc.w    -150,0150,-150    ;7
  1274.     dc.w    0000,-220,0000    ;8
  1275.     dc.w    0150,-150,-150    ;9
  1276.     dc.w    0220,0000,0000    ;10
  1277.     dc.w    0150,0150,-150    ;11
  1278.     dc.w    0000,0000,-220    ;12
  1279.     dc.w    0000,0220,0000    ;13
  1280.     dc.w    9999
  1281.  
  1282. pallo:
  1283.     dc.w    0000,0000,0220    ;0
  1284.     dc.w    -150,0150,0150    ;1
  1285.     dc.w    0150,0150,0150    ;2
  1286.     dc.w    0150,-150,0150    ;3
  1287.     dc.w    -150,-150,0150    ;4
  1288.     dc.w    -220,0000,0000    ;5
  1289.     dc.w    -150,-150,-150    ;6
  1290.     dc.w    -150,0150,-150    ;7
  1291.     dc.w    0000,-220,0000    ;8
  1292.     dc.w    0150,-150,-150    ;9
  1293.     dc.w    0220,0000,0000    ;10
  1294.     dc.w    0150,0150,-150    ;11
  1295.     dc.w    0000,0000,-220    ;12
  1296.     dc.w    0000,0220,0000    ;13
  1297.     dc.w    9999
  1298.  
  1299. kolmio:
  1300.     dc.w    0000,0000,0220    ;0
  1301.     dc.w    -050,0050,0100    ;1
  1302.     dc.w    0050,0050,0100    ;2
  1303.     dc.w    0050,-050,0100    ;3
  1304.     dc.w    -050,-050,0100    ;4
  1305.     dc.w    -100,0000,0000    ;5
  1306.     dc.w    -100,-100,-100    ;6
  1307.     dc.w    -100,0100,-100    ;7
  1308.     dc.w    0000,-100,0000    ;8
  1309.     dc.w    0100,-100,-100    ;9
  1310.     dc.w    0100,0000,0000    ;10
  1311.     dc.w    0100,0100,-100    ;11
  1312.     dc.w    0000,0000,-100    ;12
  1313.     dc.w    0000,0100,0000    ;13
  1314.     dc.w    9999
  1315.  
  1316. kuutio:
  1317.     dc.w    0000,0000,0150    ;0
  1318.     dc.w    -150,0150,0150    ;1
  1319.     dc.w    0150,0150,0150    ;2
  1320.     dc.w    0150,-150,0150    ;3
  1321.     dc.w    -150,-150,0150    ;4
  1322.     dc.w    -150,0000,0000    ;5
  1323.     dc.w    -150,-150,-150    ;6
  1324.     dc.w    -150,0150,-150    ;7
  1325.     dc.w    0000,-150,0000    ;8
  1326.     dc.w    0150,-150,-150    ;9
  1327.     dc.w    0150,0000,0000    ;10
  1328.     dc.w    0150,0150,-150    ;11
  1329.     dc.w    0000,0000,-150    ;12
  1330.     dc.w    0000,0150,0000    ;13
  1331.     dc.w    9999
  1332.  
  1333. kartio:
  1334.     dc.w    0000,0000,0100    ;0
  1335.     dc.w    -100,0030,0100    ;1
  1336.     dc.w    0100,0030,0100    ;2
  1337.     dc.w    0100,-030,0100    ;3
  1338.     dc.w    -100,-030,0100    ;4
  1339.     dc.w    -100,0000,0000    ;5
  1340.     dc.w    -100,-030,-100    ;6
  1341.     dc.w    -100,0030,-100    ;7
  1342.     dc.w    0000,-100,0000    ;8
  1343.     dc.w    0100,-030,-100    ;9
  1344.     dc.w    0100,0000,0000    ;10
  1345.     dc.w    0100,0030,-100    ;11
  1346.     dc.w    0000,0000,-100    ;12
  1347.     dc.w    0000,0100,0000    ;13
  1348.     dc.w    9999
  1349.  
  1350.  
  1351. filet
  1352.     dc.l    file1,file2,file3,file4,file5,file6,file7,file8,file9,file0
  1353.     dc.l    0
  1354.     dc.l    0
  1355.     dc.l    0
  1356.     
  1357. file1    dc.b    "dfn_01.exe",$a,"pack.exe",0
  1358.     even
  1359. file2    dc.b    "dfn_02.exe",$a,"pack.exe",0
  1360.     even
  1361. file3    dc.b    "dfn_03.exe",$a,"pack.exe",0
  1362.     even
  1363. file4    dc.b    "dfn_04.exe",$a,"pack.exe",0
  1364.     even
  1365. file5    dc.b    "dfn_05.exe",$a,"pack.exe",0
  1366.     even
  1367. file6    dc.b    "dfn_06.exe",$a,"pack.exe",0
  1368.     even
  1369. file7    dc.b    "dfn_07.exe",$a,"pack.exe",0
  1370.     even
  1371. file8    dc.b    "dfn_08.exe",$a,"pack.exe",0
  1372.     even
  1373. file9    dc.b    "dfn_09.exe",$a,"pack.exe",0
  1374.     even
  1375. file0    dc.b    "dfn_10.exe",$a,"pack.exe",0
  1376.     even
  1377.  
  1378. ;SIN & COS TABLE
  1379.  
  1380. SIN    DC.W    $0000,$0004,$0008,$000D,$0011,$0016,$001A,$001F
  1381.     DC.W    $0023,$0028,$002C,$0030,$0035,$0039,$003D,$0042
  1382.     DC.W    $0046,$004A,$004F,$0053,$0057,$005B,$005F,$0064
  1383.     DC.W    $0068,$006C,$0070,$0074,$0078,$007C,$007F,$0083
  1384.     DC.W    $0087,$008B,$008F,$0092,$0096,$009A,$009D,$00A1
  1385.     DC.W    $00A4,$00A7,$00AB,$00AE,$00B1,$00B5,$00B8,$00BB
  1386.     DC.W    $00BE,$00C1,$00C4,$00C6,$00C9,$00CC,$00CF,$00D1
  1387.     DC.W    $00D4,$00D6,$00D9,$00DB,$00DD,$00DF,$00E2,$00E4
  1388.     DC.W    $00E6,$00E8,$00E9,$00EB,$00ED,$00EE,$00F0,$00F2
  1389.     DC.W    $00F3,$00F4,$00F6,$00F7,$00F8,$00F9,$00FA,$00FB
  1390.     DC.W    $00FC,$00FC,$00FD,$00FE,$00FE,$00FF,$00FF,$00FF
  1391.     DC.W    $00FF,$00FF
  1392. ;    DC.W    $0100,$00FF,$00FF,$00FF,$00FF,$00FF
  1393. ;    DC.W    $00FE,$00FE,$00FD,$00FC,$00FC,$00FB,$00FA,$00F9
  1394. ;    DC.W    $00F8,$00F7,$00F6,$00F4,$00F3,$00F2,$00F0,$00EE
  1395. ;    DC.W    $00ED,$00EB,$00E9,$00E8,$00E6,$00E4,$00E2,$00DF
  1396. ;    DC.W    $00DD,$00DB,$00D9,$00D6,$00D4,$00D1,$00CF,$00CC
  1397. ;    DC.W    $00C9,$00C6,$00C4,$00C1,$00BE,$00BB,$00B8,$00B5
  1398.  
  1399. COS
  1400.     DC.W    $0100,$00FF,$00FF,$00FF,$00FF,$00FF
  1401.     DC.W    $00FE,$00FE,$00FD,$00FC,$00FC,$00FB,$00FA,$00F9
  1402.     DC.W    $00F8,$00F7,$00F6,$00F4,$00F3,$00F2,$00F0,$00EE
  1403.     DC.W    $00ED,$00EB,$00E9,$00E8,$00E6,$00E4,$00E2,$00DF
  1404.     DC.W    $00DD,$00DB,$00D9,$00D6,$00D4,$00D1,$00CF,$00CC
  1405.     DC.W    $00C9,$00C6,$00C4,$00C1,$00BE,$00BB,$00B8,$00B5
  1406.     DC.W    $00B1,$00AE,$00AB,$00A7,$00A4,$00A1,$009D,$009A
  1407.     DC.W    $0096,$0092,$008F,$008B,$0087,$0083,$0080,$007C
  1408.     DC.W    $0078,$0074,$0070,$006C,$0068,$0064,$005F,$005B
  1409.     DC.W    $0057,$0053,$004F,$004A,$0046,$0042,$003D,$0039
  1410.     DC.W    $0035,$0030,$002C,$0028,$0023,$001F,$001A,$0016
  1411.     DC.W    $0011,$000D,$0008,$0004,$0000,$FFFB,$FFF7,$FFF2
  1412.     DC.W    $FFEE,$FFE9,$FFE5,$FFE0,$FFDC,$FFD7,$FFD3,$FFCF
  1413.     DC.W    $FFCA,$FFC6,$FFC2,$FFBD,$FFB9,$FFB5,$FFB0,$FFAC
  1414.     DC.W    $FFA8,$FFA4,$FFA0,$FF9B,$FF97,$FF93,$FF8F,$FF8B
  1415.     DC.W    $FF87,$FF83,$FF80,$FF7C,$FF78,$FF74,$FF70,$FF6D
  1416.     DC.W    $FF69,$FF65,$FF62,$FF5E,$FF5B,$FF58,$FF54,$FF51
  1417.     DC.W    $FF4E,$FF4A,$FF47,$FF44,$FF41,$FF3E,$FF3B,$FF39
  1418.     DC.W    $FF36,$FF33,$FF30,$FF2E,$FF2B,$FF29,$FF26,$FF24
  1419.     DC.W    $FF22,$FF20,$FF1D,$FF1B,$FF19,$FF17,$FF16,$FF14
  1420.     DC.W    $FF12,$FF11,$FF0F,$FF0D,$FF0C,$FF0B,$FF09,$FF08
  1421.     DC.W    $FF07,$FF06,$FF05,$FF04,$FF03,$FF03,$FF02,$FF01
  1422.     DC.W    $FF01,$FF00,$FF00,$FF00,$FF00,$FF00,$FF00,$FF00
  1423.     DC.W    $FF00,$FF00,$FF00,$FF00,$FF01,$FF01,$FF02,$FF03
  1424.     DC.W    $FF03,$FF04,$FF05,$FF06,$FF07,$FF08,$FF09,$FF0B
  1425.     DC.W    $FF0C,$FF0D,$FF0F,$FF11,$FF12,$FF14,$FF16,$FF17
  1426.     DC.W    $FF19,$FF1B,$FF1D,$FF20,$FF22,$FF24,$FF26,$FF29
  1427.     DC.W    $FF2B,$FF2E,$FF30,$FF33,$FF36,$FF39,$FF3B,$FF3E
  1428.     DC.W    $FF41,$FF44,$FF47,$FF4A,$FF4E,$FF51,$FF54,$FF58
  1429.     DC.W    $FF5B,$FF5E,$FF62,$FF65,$FF69,$FF6D,$FF70,$FF74
  1430.     DC.W    $FF78,$FF7C,$FF7F,$FF83,$FF87,$FF8B,$FF8F,$FF93
  1431.     DC.W    $FF97,$FF9B,$FFA0,$FFA4,$FFA8,$FFAC,$FFB0,$FFB5
  1432.     DC.W    $FFB9,$FFBD,$FFC2,$FFC6,$FFCA,$FFCF,$FFD3,$FFD7
  1433.     DC.W    $FFDC,$FFE0,$FFE5,$FFE9,$FFEE,$FFF2,$FFF7,$FFFB
  1434.     DC.W    $0000,$0004,$0008,$000D,$0011,$0016,$001A,$001F
  1435.     DC.W    $0023,$0028,$002C,$0030,$0035,$0039,$003D,$0042
  1436.     DC.W    $0046,$004A,$004F,$0053,$0057,$005B,$005F,$0064
  1437.     DC.W    $0068,$006C,$0070,$0074,$0078,$007C,$007F,$0083
  1438.     DC.W    $0087,$008B,$008F,$0092,$0096,$009A,$009D,$00A1
  1439.     DC.W    $00A4,$00A7,$00AB,$00AE,$00B1,$00B5,$00B8,$00BB
  1440.     DC.W    $00BE,$00C1,$00C4,$00C6,$00C9,$00CC,$00CF,$00D1
  1441.     DC.W    $00D4,$00D6,$00D9,$00DB,$00DD,$00DF,$00E2,$00E4
  1442.     DC.W    $00E6,$00E8,$00E9,$00EB,$00ED,$00EE,$00F0,$00F2
  1443.     DC.W    $00F3,$00F4,$00F6,$00F7,$00F8,$00F9,$00FA,$00FB
  1444.     DC.W    $00FC,$00FC,$00FD,$00FE,$00FE,$00FF,$00FF,$00FF
  1445.     DC.W    $00FF,$00FF,$0100,$00FF,$00FF,$00FF,$00FF,$00FF
  1446.     DC.W    $00FE,$00FE,$00FD,$00FC,$00FC,$00FB,$00FA,$00F9
  1447.     DC.W    $00F8,$00F7,$00F6,$00F4,$00F3,$00F2,$00F0,$00EE
  1448.     DC.W    $00ED,$00EB,$00E9,$00E8,$00E6,$00E4,$00E2,$00DF
  1449.     DC.W    $00DD,$00DB,$00D9,$00D6,$00D4,$00D1,$00CF,$00CC
  1450.     DC.W    $00C9,$00C6,$00C4,$00C1,$00BE,$00BB,$00B8,$00B5
  1451.     DC.W    $00B1,$00AE,$00AB,$00A7,$00A4,$00A1,$009D,$009A
  1452.     DC.W    $0096,$0092,$008F,$008B,$0087,$0083,$0080,$007C
  1453.  
  1454. menutxt    dc.b    "TOMAATTI&SOSE PACK 00"
  1455.     dc.b    "---------------------"
  1456.     dc.b    "                     "
  1457.     DC.B    "DIFFUSION  PARTYINVIT"    
  1458.     DC.B    "MOVEMENT   40KB INTRO"
  1459.     DC.B    "SPACEBALLS 40KB INTRO"
  1460.     DC.B    "DIFFUSION  KAURAPUURO"
  1461.     DC.B    "DIFFUSION       INTRO"
  1462.     DC.B    "VD/FLT          INTRO"
  1463.     DC.B    "GENOCIDE        INTRO"
  1464.     DC.B    "SANITY       HOSPITAL"
  1465.     DC.B    "PARADOX   CRACK-INTRO"
  1466.     DC.B    "M&K             INTRO"
  1467.  
  1468. scrolltxt
  1469.     dc.b    " HELLO ! AND WELCOME TO TOMAATTISOSE PACK "
  1470.     DC.B    "0000 BETA... FIRST DA CREDITS FOR THIS PACK "
  1471.     DC.B    "* CODE AND FONT - ASTRAL @ * MUSIC - BEATHAWK @ "
  1472.     DC.B    "* LOGO - ROCK LOBSTER @ * MINI-DFN - BRAINIAK @ * "
  1473.     DC.B    "PACKED - ASTRAL @    ... PRESS RIGHT MOUSE BUTTON "
  1474.     DC.B    "FOR MAG-PART ... GREETINGS FROM ME GOES TO: * "
  1475.     DC.B    "QUACKBUSTER/STATIC BYTES - SCAVY/TRANCE - IRON/MAD "
  1476.     DC.B    "ELKS - ATOMIC/ORION - DARREN/SCOOPEX - ELVIS/LIMBO - "
  1477.     DC.B    "CHARON SOFTWARE - LENIN/FREEZERS - WARHAWK/OBSESSION - "
  1478.     DC.B    "QBA/ILLUSION - GODFATHER - LINUS BLOM - AND ALL THE "
  1479.     DC.B    "REST ... @    WELL, JUST WAIT FOR THE FIRST PACK, MADE"
  1480.     DC.B    " BY VIPER...     C U ..                              "
  1481.     dc.b    "                                       "
  1482.     DC.B    $FF,$20,$20
  1483.  
  1484.     even
  1485.     
  1486. scrpl:    blk.b    $2c0,0
  1487.     even
  1488.  
  1489. font    incbin    "Wdh0:Gfx/Raw/partyfont.raw"
  1490. scrf    incbin    "Wdh0:Gfx/Raw/scrfade.raw"
  1491. _apu1:    bra.w    _apu1b
  1492. _apu2:    bra.w    _apu2b
  1493. _apu3:    bra.w    _apu3b
  1494. logo    incbin    "Wdh0:Gfx/Raw/diflogo11.raw"
  1495. tausta    incbin    "Wdh0:Gfx/Raw/mini-dfn.raw"
  1496.     even
  1497. _apu1b:    
  1498.     bsr    P50_Init
  1499.     rts
  1500. _apu2b:    
  1501.     bsr.w    P50_Music
  1502.     rts
  1503. _apu3b:    
  1504.     bsr.w    P50_End
  1505.     rts
  1506.     
  1507. ;    section    Player5.0A,code
  1508.  
  1509.     rts
  1510.  
  1511. ;P50_IRQsave    dc    0
  1512. ;P50_DMAsave    dc    0
  1513. ;P50_raster    dc.l    0
  1514. ;P50_raster2    dc.l    0
  1515. ;P50_frames    dc.l    0
  1516. ;P50_diri    dc    1
  1517.  
  1518. *********************************
  1519. *        Player v5.0A ®        *
  1520. *      All in one-version    *
  1521. *     MC68000/68010-version    *
  1522. *        Version 503.1        *
  1523. *    © 1992 Jarno Paananen    *
  1524. *     All rights reserved    *
  1525. *********************************
  1526.  
  1527.  
  1528. ******** START OF BINARY FILE **************
  1529.  
  1530. P50_motuuli
  1531.     bra    P50_Init
  1532.     ifeq    CIA
  1533.     bra    P50_Music
  1534.     else
  1535.     rts
  1536.     rts
  1537.     endc
  1538.     bra    P50_End
  1539.     rts                ;no P50_SetRepeat
  1540.     rts
  1541.  
  1542. P50_master    dc    64        ;Master volume (0-64)
  1543. P50_Tempo    dc    1        ;Use tempo? 0=no,non 0=yes
  1544. P50_play    dc    1        ;Stop flag (0=stop)
  1545.  
  1546. P50_Temp0Offset
  1547.     dc.l    P50_temp0-P50_motuuli
  1548. P50_Temp1Offset
  1549.     dc.l    P50_temp1-P50_motuuli
  1550. P50_Temp2Offset
  1551.     dc.l    P50_temp2-P50_motuuli
  1552. P50_Temp3Offset
  1553.     dc.l    P50_temp3-P50_motuuli
  1554.  
  1555. P50_getnote    macro
  1556.     moveq    #$7e,d0
  1557.     and.b    (a5),d0
  1558.     beq.b    .nonote\@
  1559.     ifne    P50_vib
  1560.     clr.b    P50_VibPos(a5)
  1561.     endc
  1562.  
  1563.     ifne    P50_ft
  1564.     add    P50_Fine(a5),d0
  1565.     endc
  1566.     move    d0,P50_Note(a5)
  1567.     move    (a2,d0),P50_Period(a5)
  1568.  
  1569. .nonote\@
  1570.     endm
  1571.  
  1572.     ifne    CIA
  1573.  
  1574.     ifeq    system
  1575. P50_intti
  1576.     movem.l    d0-a6,-(sp)
  1577.     tst.b    $bfdd00
  1578.     move.b    #$7e,$bfdd00
  1579.  
  1580.     lea    $dff000,a6
  1581. ;    move    #$fff,$180(a6)
  1582.     bsr    P50_Music
  1583. ;    move    #0,$180(a6)
  1584.     move    #$2000,$9c(a6)
  1585.     movem.l    (sp)+,d0-a6
  1586.     rte
  1587.  
  1588.     else
  1589. P50_lev6server
  1590.     movem.l    d2-d7/a2-a6,-(sp)
  1591.     lea    $dff000,a6
  1592.     lea    P50_cn(pc),a3
  1593.     move    P50_server(pc),d0
  1594.     bne.b    P50_eieka
  1595.     pea    P50_ohi(pc)
  1596.     bra    P50_Music
  1597. P50_eieka
  1598.     subq    #1,d0
  1599.     beq    P50_dmason
  1600.     bra    P50_setrepeat
  1601. P50_ohi    movem.l    (sp)+,d2-d7/a2-a6
  1602.     moveq    #1,d0
  1603.     rts
  1604.     endc
  1605.     endc
  1606.  
  1607. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  1608. ;­ Call P50_Init to initialize the playroutine    ­
  1609. ;­ D0 --> Timer detection (for CIA-version)    ­
  1610. ;­ A0 --> Address to the module            ­
  1611. ;­ A1 --> Address to samples/0            ­
  1612. ;­ A6 --> Customchip baseaddress ($DFF000)    ­
  1613. ;­ D0 <-- 0 if succeeded            ­
  1614. ;­         Uses A0-A5/D0-D6        ­
  1615. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  1616.  
  1617.  
  1618. P50_Init
  1619.     cmp.l    #"P50A",(a0)+
  1620.     beq.b    .modok
  1621.     subq.l    #4,a0
  1622.  
  1623. .modok    basereg    P50_cn,a3
  1624.     lea    P50_cn(pc),a3
  1625.  
  1626.     ifne    CIA
  1627.     move    d0,-(sp)
  1628.     endc
  1629.  
  1630.     move.l    a1,d0
  1631.     bne.b    .redirect
  1632.  
  1633.     moveq    #0,d0
  1634.     move    (a0),d0
  1635.     lea    (a0,d0.l),a1
  1636. .redirect
  1637.     lea    4(a0),a2
  1638.     lea    P50_Samples(pc),a4
  1639.     moveq    #0,d1
  1640.     move.b    3(a0),d1
  1641.     subq    #1,d1
  1642.     moveq    #0,d4
  1643. P50_lopos
  1644.     move.l    a1,(a4)+
  1645.     move    (a2)+,d4
  1646.     bpl.b    P50_kook
  1647.     neg    d4
  1648.     asl    #4,d4
  1649.     lea    P50_Samples-16(pc),a5
  1650.     move.l    (a5,d4),d6
  1651.     move.l    d6,-4(a4)
  1652.     move    4(a5,d4),d4
  1653.     sub.l    d4,a1
  1654.     sub.l    d4,a1
  1655.     bra.b    P50_jatk
  1656.  
  1657. P50_kook
  1658.     move.l    a1,d6
  1659. P50_jatk
  1660.     move    d4,(a4)+
  1661.     moveq    #0,d2
  1662.     move.b    (a2)+,d2
  1663.     moveq    #0,d3
  1664.     move.b    (a2)+,d3
  1665.     moveq    #0,d0
  1666.     move    (a2)+,d0
  1667.     bmi.b    .norepeat
  1668.  
  1669.     move    d4,d5
  1670.     sub    d0,d5
  1671.     add.l    d0,d0
  1672.     move.l    d6,a5
  1673.     lea    (a5,d0.l),a5
  1674.     move.l    a5,(a4)+
  1675.     move    d5,(a4)+
  1676.     bra.b    P50_gene
  1677. .norepeat
  1678.     move.l    d6,(a4)+
  1679.     move    #1,(a4)+
  1680. P50_gene
  1681.     move    d3,(a4)+
  1682.     mulu    #74,d2
  1683.     move    d2,(a4)+
  1684.     add.l    d4,a1
  1685.     add.l    d4,a1
  1686.     dbf    d1,P50_lopos
  1687.  
  1688.     lea    P50_temp0(pc),a1
  1689.     lea    P50_temp1(pc),a2
  1690.     lea    P50_temp2(pc),a4
  1691.     lea    P50_temp3(pc),a5
  1692.     moveq    #Channel_Block_SIZE/2-2,d0
  1693.     moveq    #0,d1
  1694. .cl    move    d1,(a1)+
  1695.     move    d1,(a2)+
  1696.     move    d1,(a4)+
  1697.     move    d1,(a5)+
  1698.     dbf    d0,.cl
  1699.  
  1700.     moveq    #0,d0
  1701.     move.b    3(a0),d0
  1702.     mulu    #6,d0
  1703.     lea    4(a0,d0.l),a1
  1704.     move.l    a1,P50_positionbase(a3)
  1705.  
  1706.     move.b    2(a0),d1
  1707.     lsl    #3,d1
  1708.     lea    (a1,d1.l),a4
  1709.     move.l    a4,P50_possibase(a3)
  1710.  
  1711.     move.l    a4,a2
  1712.     moveq    #-1,d0
  1713. .search    cmp.b    (a2)+,d0
  1714.     bne.b    .search
  1715.     move.l    a2,P50_patternbase(a3)    
  1716.  
  1717.     ifd    start
  1718.     lea    start(a4),a4
  1719.     endc
  1720.  
  1721.     moveq    #0,d0
  1722.     move.b    (a4)+,d0
  1723.     move.l    a4,P50_spos(a3)
  1724.     lsl    #2,d0
  1725.     add.l    d0,a1
  1726.  
  1727.     move.l    a2,a4
  1728.     moveq    #0,d0    
  1729.     move    (a1)+,d0
  1730.     lea    (a4,d0.l),a2
  1731.     move.l    a2,P50_ChaPos+P50_temp0(a3)
  1732.     move    (a1)+,d0
  1733.     lea    (a4,d0.l),a2
  1734.     move.l    a2,P50_ChaPos+P50_temp1(a3)
  1735.     move    (a1)+,d0
  1736.     lea    (a4,d0.l),a2
  1737.     move.l    a2,P50_ChaPos+P50_temp2(a3)
  1738.     move    (a1)+,d0
  1739.     lea    (a4,d0.l),a2
  1740.     move.l    a2,P50_ChaPos+P50_temp3(a3)
  1741.  
  1742.     lea    P50_setrepeat(pc),a0
  1743.     move.l    a0,P50_intaddr(a3)
  1744.  
  1745.     move    #63,P50_rowpos(a3)
  1746.     move    #6,P50_speed(a3)
  1747.     move    #5,P50_speed2(a3)
  1748.     clr    P50_speedis1(a3)
  1749.  
  1750.     ifne    P50_pl
  1751.     clr    P50_plflag(a3)
  1752.     clr    P50_plcount(a3)
  1753.     endc
  1754.  
  1755.     ifne    P50_pde
  1756.     clr    P50_pdelay(a3)
  1757.     endc
  1758.     clr    (a3)
  1759.  
  1760.     bset    #1,$bfe001
  1761.  
  1762.     ifeq    system
  1763.     move.l    4.w,a6
  1764.     moveq    #0,d0
  1765.     btst    d0,297(a6)
  1766.     beq.b    .no68010
  1767.  
  1768.     lea    P50_liko(pc),a5
  1769.     jsr    -$1e(a6)
  1770.  
  1771. .no68010
  1772.     move.l    d0,P50_vektori(a3)
  1773.     move.l    d0,a0
  1774.     move.l    $78(a0),P50_oldlev6(a3)
  1775.     endc
  1776.  
  1777.     moveq    #0,d0
  1778.     lea    $dff000,a6
  1779.     move    d0,$a8(a6)
  1780.     move    d0,$b8(a6)
  1781.     move    d0,$c8(a6)
  1782.     move    d0,$d8(a6)
  1783.     move    #$f,$96(a6)
  1784.  
  1785.     ifeq    system
  1786.     move    #$2000,$9a(a6)
  1787.     lea    $bfd000,a0
  1788.     move.b    #$7f,$d00(a0)
  1789.     move.b    #8,$e00(a0)
  1790.     endc
  1791.  
  1792.     ifeq    CIA
  1793.     move.b    #$4a,$400(a0)
  1794.     move.b    #1,$500(a0)
  1795. .wati
  1796.     btst    d0,$d00(a0)
  1797.     beq.b    .wati
  1798.     move.b    #$81,$d00(a0)
  1799.     move    #$e000,$9a(a6)
  1800.     endc
  1801.  
  1802.     ifne    CIA
  1803.     move    (sp)+,d0
  1804.     subq    #1,d0
  1805.     beq.b    P50_ForcePAL
  1806.     subq    #1,d0
  1807.     beq.b    P50_NTSC
  1808.     move.l    4.w,a1
  1809.     cmp.b    #60,$212(a1)    ;VBlankFrequency
  1810.     beq.b    P50_NTSC
  1811. P50_ForcePAL
  1812.     move.l    #1773447,d0    ;PAL
  1813.     bra.b    P50_setcia
  1814. P50_NTSC
  1815.     move.l    #1789773,d0    ;NTSC
  1816. P50_setcia
  1817.     move.l    d0,P50_timer(a3)
  1818.     divu    #125,d0
  1819.     move    d0,P50_thi2(a3)
  1820.     sub    #$1c8*2,d0
  1821.     move    d0,P50_thi(a3)
  1822.  
  1823.     ifeq    system
  1824.     move.b    d0,$400(a0)
  1825.     lsr    #8,d0
  1826.     move.b    d0,$500(a0)
  1827.  
  1828.     lea    P50_intti(pc),a1
  1829.     move.l    a1,P50_tintti(a3)
  1830.     move.l    P50_vektori(pc),a2
  1831.     move.l    a1,$78(a2)
  1832.  
  1833.     move.b    #$81,$d00(a0)
  1834.     move.b    #$19,$e00(a0)
  1835.     moveq    #0,d0
  1836.     endc
  1837.     endc
  1838.  
  1839.     ifeq    system
  1840.     move    #$e000,$9a(a6)
  1841.     rts
  1842.  
  1843. P50_liko
  1844.     dc.l    $4E7A0801        ;MOVEC    VBR,d0
  1845.     rte
  1846.     endc
  1847.  
  1848.     ifne    system
  1849.     move.l    4.w,a6
  1850.     moveq    #-1,d0
  1851.     jsr    -$14a(a6)
  1852.     move.b    d0,P50_sigbit(a3)
  1853.     bmi    P50_err
  1854.  
  1855.     lea    P50_allocport(pc),a1
  1856.     move.l    a1,P50_portti(a3)
  1857.     move.b    d0,15(a1)
  1858.     move.l    a1,-(sp)
  1859.     suba.l    a1,a1
  1860.     jsr    -$126(a6)
  1861.     move.l    (sp)+,a1
  1862.     move.l    d0,16(a1)
  1863.     lea    P50_reqlist(pc),a0
  1864.     move.l    a0,(a0)
  1865.     addq.l    #4,(a0)
  1866.     clr.l    4(a0)
  1867.     move.l    a0,8(a0)
  1868.  
  1869.     lea    P50_dat(pc),a1
  1870.     move.l    a1,P50_reqdata(a3)
  1871.     lea    P50_allocreq(pc),a1
  1872.     lea    P50_audiodev(pc),a0
  1873.     moveq    #0,d0
  1874.     moveq    #0,d1
  1875.     move.l    4.w,a6
  1876.     jsr    -$1bc(a6)
  1877.     tst.b    d0
  1878.     bne    P50_err
  1879.     st.b    P50_audioopen(a3)
  1880.  
  1881.     lea    P50_timerint(pc),a1
  1882.     move.l    a1,P50_timerdata(a3)
  1883.     lea    P50_lev6server(pc),a1
  1884.     move.l    a1,P50_timerdata+8(a3)
  1885.  
  1886.     moveq    #8,d3
  1887.     lea    P50_cianame(pc),a1
  1888.     move.b    #'b',3(a1)
  1889. P50_openciares
  1890.     moveq    #0,d0
  1891.     jsr    -$1f2(a6)
  1892.     move.l    d0,P50_ciares(a3)
  1893.     beq.b    P50_tryCIAA
  1894.     move.l    d0,a6
  1895.     lea    P50_timerinterrupt(pc),a1
  1896.     moveq    #0,d0
  1897.     jsr    -6(a6)
  1898.     tst.l    d0
  1899.     beq.b    P50_gottimer
  1900.     addq.l    #4,d3
  1901.     lea    P50_timerinterrupt(pc),a1
  1902.     moveq    #1,d0
  1903.     jsr    -6(a6)
  1904.     tst.l    d0
  1905.     beq.b    P50_gottimer
  1906. P50_tryCIAA
  1907.     lea    P50_cianame(pc),a1
  1908.     cmp.b    #'b',3(a1)
  1909.     bne.b    P50_err
  1910.     subq.b    #1,3(a1)
  1911.     moveq    #0,d3
  1912.     bra    P50_openciares
  1913.  
  1914. P50_gottimer
  1915.     lea    P50_craddr+8(pc),a6
  1916.     move.l    P50_ciaaddr(pc,d3),d0
  1917.     move.l    d0,(a6)
  1918.     sub    #$100,d0
  1919.     move.l    d0,-(a6)
  1920.     moveq    #2,d3
  1921.     btst    #9,d0
  1922.     bne.b    P50_timerB
  1923.     subq.b    #1,d3
  1924.     add    #$100,d0
  1925. P50_timerB
  1926.     add    #$900,d0
  1927.     move.l    d0,-(a6)
  1928.     move.l    d0,a0
  1929.     and.b    #%10000000,(a0)
  1930.     move.b    d3,P50_timeropen(a3)
  1931.     moveq    #0,d0
  1932.  
  1933.     move.l    P50_craddr+4(pc),a1
  1934.     move.b    P50_tlo(pc),(a1)
  1935.     move.b    P50_thi(pc),$100(a1)
  1936.     or.b    #$19,(a0)
  1937.     rts
  1938.  
  1939. P50_err    moveq    #-1,d0
  1940.     rts
  1941.  
  1942. P50_ciaaddr
  1943.     dc.l    $bfe501,$bfe701,$bfd500,$bfd700
  1944.     endc
  1945.  
  1946. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  1947. ;­         Call P50_End to stop the music        ­
  1948. ;­   A6 --> Customchip baseaddress ($DFF000)    ­
  1949. ;­          Uses D0/A0            ­
  1950. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  1951.     
  1952. P50_End    moveq    #0,d0
  1953.     move    d0,$a8(a6)
  1954.     move    d0,$b8(a6)
  1955.     move    d0,$c8(a6)
  1956.     move    d0,$d8(a6)
  1957.     bclr    #1,$bfe001
  1958.     move    #$f,$96(a6)
  1959.  
  1960.     ifeq    system
  1961.     move    #$2000,$9a(a6)
  1962.     move.l    P50_vektori(pc),a0
  1963.     move.l    P50_oldlev6(pc),$78(a0)
  1964.  
  1965.     else
  1966.     lea    P50_cn(pc),a3
  1967.     moveq    #0,d0
  1968.     move.b    P50_timeropen(pc),d0
  1969.     beq.b    P50_rem1
  1970.     move.l    P50_ciares(pc),a6
  1971.     lea    P50_timerinterrupt(pc),a1
  1972.     subq.b    #1,d0
  1973.     jsr    -$c(a6)
  1974. P50_rem1
  1975.     move.l    4.w,a6
  1976.     tst.b    P50_audioopen(a3)
  1977.     beq.b    P50_rem2
  1978.     lea    P50_allocreq(a3),a1
  1979.     jsr    -$1c2(a6)
  1980.     clr.b    P50_audioopen(a3)
  1981. P50_rem2
  1982.     moveq    #0,d0
  1983.     move.b    P50_sigbit(pc),d0
  1984.     bmi.b    P50_rem3
  1985.     jsr    -$150(a6)
  1986.     st    P50_sigbit(a3)
  1987. P50_rem3
  1988.     endc
  1989.     rts
  1990.  
  1991.     ifne    fade
  1992. P50_mfade
  1993.     move    P50_master(pc),d0
  1994.     move    P50_temp0+P50_Shadow(pc),d1
  1995.     mulu    d0,d1
  1996.     lsr    #6,d1
  1997.     move    d1,$a8(a6)
  1998.  
  1999.     ifgt    channels-1
  2000.     move    P50_temp1+P50_Shadow(pc),d1
  2001.     mulu    d0,d1
  2002.     lsr    #6,d1
  2003.     move    d1,$b8(a6)
  2004.     endc
  2005.  
  2006.     ifgt    channels-2
  2007.     move    P50_temp2+P50_Shadow(pc),d1
  2008.     mulu    d0,d1
  2009.     lsr    #6,d1
  2010.     move    d1,$c8(a6)
  2011.     endc
  2012.  
  2013.     ifgt    channels-3
  2014.     move    P50_temp3+P50_Shadow(pc),d1
  2015.     mulu    d0,d1
  2016.     lsr    #6,d1
  2017.     move    d1,$d8(a6)
  2018.     endc
  2019.     rts
  2020.     endc
  2021.     
  2022. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  2023. ;­ Call P50_Music every frame to play the music    ­
  2024. ;­ A6 --> Customchip baseaddress ($DFF000)    ­
  2025. ;­              Uses A0-A5/D0-D7        ­
  2026. ;­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­
  2027.  
  2028. P50_Music
  2029.     lea    P50_cn(pc),a3
  2030.  
  2031.     tst    P50_play(a3)
  2032.     bne.b    P50_ohitaaa
  2033.     ifne    CIA
  2034.     ifeq    system
  2035.     move.l    P50_vektori(pc),a5
  2036.     move.l    P50_tintti(pc),$78(a5)
  2037.     move.b    P50_tlo2(pc),$bfd400
  2038.     move.b    P50_thi2(pc),$bfd500
  2039.  
  2040.     else
  2041.     clr    P50_server(a3)
  2042.     move.l    P50_craddr+4(pc),a0
  2043.     move.b    P50_tlo2(pc),(a0)
  2044.     move.b    P50_thi2(pc),$100(a0)
  2045.     endc
  2046.     endc
  2047.     rts
  2048.  
  2049. P50_ohitaaa
  2050.     ifne    fade
  2051.     pea    P50_mfade(pc)
  2052.     endc
  2053.  
  2054.     moveq    #Channel_Block_SIZE,d6
  2055.     moveq    #16,d7
  2056.  
  2057.     move    (a3),d4
  2058.     addq    #1,d4
  2059.     cmp    P50_speed(pc),d4
  2060.     beq    P50_playtime
  2061.  
  2062.     move    d4,(a3)
  2063.  
  2064. P50_delay
  2065.     ifne    CIA
  2066.     ifeq    system
  2067.     move.l    P50_vektori(pc),a5
  2068.     move.l    P50_tintti(pc),$78(a5)
  2069.     move.b    P50_tlo2(pc),$bfd400
  2070.     move.b    P50_thi2(pc),$bfd500
  2071.  
  2072.     else
  2073.     clr    P50_server(a3)
  2074.     move.l    P50_craddr+4(pc),a0
  2075.     move.b    P50_tlo2(pc),(a0)
  2076.     move.b    P50_thi2(pc),$100(a0)
  2077.     endc
  2078.     endc
  2079.  
  2080.     lea    P50_temp0(pc),a5
  2081.     lea    $a0(a6),a4
  2082.  
  2083.     moveq    #channels-1,d5
  2084. P50_lopas
  2085.     tst    P50_OnOff(a5)
  2086.     beq    P50_contfxdone
  2087.     moveq    #$f,d0
  2088.     and    (a5),d0
  2089.     add    d0,d0
  2090.     move    P50_jtab2(pc,d0),d0
  2091.     jmp    P50_jtab2(pc,d0)
  2092.  
  2093. P50_jtab2
  2094.     dc    P50_contfxdone-P50_jtab2
  2095.  
  2096.     ifne    P50_pu
  2097.     dc    P50_portup-P50_jtab2
  2098.     else
  2099.     dc    P50_contfxdone-P50_jtab2
  2100.     endc
  2101.  
  2102.     ifne    P50_pd
  2103.     dc    P50_portdwn-P50_jtab2
  2104.     else
  2105.     dc    P50_contfxdone-P50_jtab2
  2106.     endc
  2107.  
  2108.     ifne    P50_tp
  2109.     dc    P50_toneport-P50_jtab2
  2110.     else
  2111.     dc    P50_contfxdone-P50_jtab2
  2112.     endc
  2113.  
  2114.     ifne    P50_vib
  2115.     dc    P50_vib2-P50_jtab2
  2116.     else
  2117.     dc    P50_contfxdone-P50_jtab2
  2118.     endc
  2119.  
  2120.     ifne    P50_tpvs
  2121.     dc    P50_tpochvslide-P50_jtab2
  2122.     else
  2123.     dc    P50_contfxdone-P50_jtab2
  2124.     endc
  2125.  
  2126.     ifne    P50_vbvs
  2127.     dc    P50_vibochvslide-P50_jtab2
  2128.     else
  2129.     dc    P50_contfxdone-P50_jtab2
  2130.     endc
  2131.  
  2132.     ifne    P50_tre
  2133.     dc    P50_tremo-P50_jtab2
  2134.     else
  2135.     dc    P50_contfxdone-P50_jtab2
  2136.     endc
  2137.  
  2138.     ifne    P50_arp
  2139.     dc    P50_arpeggio-P50_jtab2
  2140.     else
  2141.     dc    P50_contfxdone-P50_jtab2
  2142.     endc
  2143.  
  2144.     dc    P50_contfxdone-P50_jtab2
  2145.  
  2146.     ifne    P50_vs
  2147.     dc    P50_volslide-P50_jtab2
  2148.     else
  2149.     dc    P50_contfxdone-P50_jtab2
  2150.     endc
  2151.  
  2152.     dc    P50_contfxdone-P50_jtab2
  2153.     dc    P50_contfxdone-P50_jtab2
  2154.     dc    P50_contfxdone-P50_jtab2
  2155.  
  2156.     ifne    P50_ec
  2157.     dc    P50_contecommands-P50_jtab2
  2158.     else
  2159.     dc    P50_contfxdone-P50_jtab2
  2160.     endc
  2161.     dc    P50_contfxdone-P50_jtab2
  2162.  
  2163.     ifne    P50_ec
  2164. P50_contecommands
  2165.     move.b    P50_Info(a5),d0
  2166.     and.b    #$f0,d0
  2167.     lsr    #3,d0
  2168.     move    P50_etab2(pc,d0),d0
  2169.     jmp    P50_etab2(pc,d0)
  2170.  
  2171. P50_etab2
  2172.     dc    P50_contfxdone-P50_etab2
  2173.  
  2174.     ifne    P50_fsu
  2175.     dc    P50_fineup2-P50_etab2
  2176.     else
  2177.     dc    P50_contfxdone-P50_etab2
  2178.     endc
  2179.  
  2180.     ifne    P50_fsd
  2181.     dc    P50_finedwn2-P50_etab2
  2182.     else
  2183.     dc    P50_contfxdone-P50_etab2
  2184.     endc
  2185.  
  2186.     dc    P50_contfxdone-P50_etab2
  2187.     dc    P50_contfxdone-P50_etab2
  2188.  
  2189.     dc    P50_contfxdone-P50_etab2
  2190.     dc    P50_contfxdone-P50_etab2
  2191.  
  2192.     dc    P50_contfxdone-P50_etab2
  2193.     dc    P50_contfxdone-P50_etab2
  2194.  
  2195.     ifne    P50_rt
  2196.     dc    P50_retrig-P50_etab2
  2197.     else
  2198.     dc    P50_contfxdone-P50_etab2
  2199.     endc
  2200.  
  2201.     ifne    P50_fvu
  2202.     dc    P50_finevup2-P50_etab2
  2203.     else
  2204.     dc    P50_contfxdone-P50_etab2
  2205.     endc
  2206.  
  2207.     ifne    P50_fvd
  2208.     dc    P50_finevdwn2-P50_etab2
  2209.     else
  2210.     dc    P50_contfxdone-P50_etab2
  2211.     endc
  2212.  
  2213.     dc    P50_notecut-P50_etab2
  2214.  
  2215.     ifne    P50_nd
  2216.     dc    P50_notedelay-P50_etab2
  2217.     else
  2218.     dc    P50_contfxdone-P50_etab2
  2219.     endc
  2220.  
  2221.     dc    P50_contfxdone-P50_etab2
  2222.     dc    P50_contfxdone-P50_etab2
  2223.     endc
  2224.  
  2225.     ifne    P50_fsu
  2226. P50_fineup2
  2227.     tst    (a3)
  2228.     bne    P50_contfxdone
  2229.     moveq    #$f,d0
  2230.     and.b    P50_Info(a5),d0
  2231.     sub    d0,P50_Period(a5)
  2232.     moveq    #113,d0
  2233.     cmp    P50_Period(a5),d0
  2234.     ble    .jup
  2235.     move    d0,P50_Period(a5)
  2236. .jup    move    P50_Period(a5),6(a4)
  2237.     bra    P50_contfxdone
  2238.     endc
  2239.  
  2240.     ifne    P50_fsd
  2241. P50_finedwn2
  2242.     tst    (a3)
  2243.     bne    P50_contfxdone
  2244.     moveq    #$f,d0
  2245.     and.b    P50_Info(a5),d0
  2246.     add    d0,P50_Period(a5)
  2247.     cmp    #856,P50_Period(a5)
  2248.     ble    .jup
  2249.     move    #856,P50_Period(a5)
  2250. .jup    move    P50_Period(a5),6(a4)
  2251.     bra    P50_contfxdone
  2252.     endc
  2253.  
  2254.     ifne    P50_fvu
  2255. P50_finevup2
  2256.     tst    (a3)
  2257.     bne    P50_contfxdone
  2258.     moveq    #$f,d0
  2259.     and.b    P50_Info(a5),d0
  2260.     add    d0,P50_Volume(a5)
  2261.     moveq    #64,d0
  2262.     cmp    P50_Volume(a5),d0
  2263.     bge.b    .jup
  2264.     move    d0,P50_Volume(a5)
  2265. .jup    move    P50_Volume(a5),8(a4)
  2266.     bra    P50_contfxdone
  2267.     endc
  2268.  
  2269.     ifne    P50_fvd
  2270. P50_finevdwn2
  2271.     tst    (a3)
  2272.     bne    P50_contfxdone
  2273.     moveq    #$f,d0
  2274.     and.b    P50_Info(a5),d0
  2275.     sub    d0,P50_Volume(a5)
  2276.     bpl.b    .jup
  2277.     clr    P50_Volume(a5)
  2278. .jup    move    P50_Volume(a5),8(a4)
  2279.     bra    P50_contfxdone
  2280.     endc
  2281.  
  2282.     ifne    P50_nc
  2283. P50_notecut
  2284.     moveq    #$f,d0
  2285.     and.b    P50_Info(a5),d0
  2286.     cmp    (a3),d0
  2287.     bne    P50_contfxdone
  2288.     ifeq    fade
  2289.     clr    8(a4)
  2290.     else
  2291.     clr    P50_Shadow(a5)
  2292.     endc
  2293.     clr    P50_Volume(a5)
  2294.     bra    P50_contfxdone
  2295.     endc
  2296.  
  2297.     ifne    P50_nd
  2298. P50_notedelay
  2299.     moveq    #$f,d0
  2300.     and.b    P50_Info(a5),d0
  2301.     cmp    (a3),d0
  2302.     bne    P50_contfxdone
  2303.  
  2304.     moveq    #$7e,d0
  2305.     and.b    (a5),d0
  2306.     beq    P50_contfxdone
  2307.     move    P50_DMABit(a5),d0
  2308.     move    d0,$96(a6)
  2309.     or    d0,P50_dma(a3)
  2310.     move.l    P50_Sample(a5),a1
  2311.     move.l    (a1)+,(a4)+
  2312.     move    (a1),(a4)+
  2313.     move    P50_Period(a5),(a4)
  2314.     subq.l    #6,a4
  2315.     ifeq    system
  2316.     lea    P50_dmason(pc),a1
  2317.     move.l    a1,d0
  2318.     move.l    P50_vektori(pc),a1
  2319.     move.l    d0,$78(a1)
  2320.     endc
  2321.  
  2322.     ifeq    CIA
  2323.     move.b    #$19,$bfde00
  2324.     else
  2325.     ifeq    system
  2326.     move.b    #$4a,$bfd400
  2327.     move.b    #1,$bfd500
  2328.     else
  2329.     move    #1,P50_server(a3)
  2330.     move.l    P50_craddr+4(pc),a1
  2331.     move.b    #$4a,(a1)
  2332.     move.b    #1,$100(a1)
  2333.     endc
  2334.     endc
  2335.  
  2336.     bra    P50_contfxdone
  2337.     endc
  2338.  
  2339.     ifne    P50_rt
  2340. P50_retrig
  2341.     subq    #1,P50_RetrigCount(a5)
  2342.     bne    P50_contfxdone
  2343.     move    P50_DMABit(a5),d0
  2344.     move    d0,$96(a6)
  2345.     or    d0,P50_dma(a3)
  2346.     move.l    P50_Sample(a5),a1
  2347.     move.l    (a1)+,(a4)
  2348.     move    (a1),4(a4)
  2349.  
  2350.     ifeq    system
  2351.     lea    P50_dmason(pc),a1
  2352.     move.l    a1,d0
  2353.     move.l    P50_vektori(pc),a1
  2354.     move.l    d0,$78(a1)
  2355.     endc
  2356.  
  2357.     ifeq    CIA
  2358.     move.b    #$19,$bfde00
  2359.     else
  2360.     ifeq    system
  2361.     move.b    #$4a,$bfd400
  2362.     move.b    #1,$bfd500
  2363.     else
  2364.     move    #1,P50_server(a3)
  2365.     move.l    P50_craddr+4(pc),a1
  2366.     move.b    #$4a,(a1)
  2367.     move.b    #1,$100(a1)
  2368.     endc
  2369.     endc
  2370.  
  2371.     moveq    #$f,d0
  2372.     and.b    P50_Info(a5),d0
  2373.     move    d0,P50_RetrigCount(a5)
  2374.     bra    P50_contfxdone
  2375.     endc
  2376.  
  2377.     ifne    P50_arp
  2378. P50_arplist
  2379.     dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1
  2380.  
  2381. P50_arpeggio
  2382.     move    (a3),d0
  2383.     move.b    P50_arplist(pc,d0),d0
  2384.     beq.b    .arp0
  2385.     ror.b    #1,d0
  2386.     bcc.b    P50_arp1
  2387.     moveq    #$f,d0
  2388.     and.b    P50_Info(a5),d0
  2389.     bra.b    P50_arp3
  2390. .arp0
  2391.     move    P50_Note(a5),d0
  2392.     move    P50_periods(pc,d0),6(a4)
  2393.     bra    P50_contfxdone
  2394. P50_arp1
  2395.     move.b    P50_Info(a5),d0
  2396.     lsr    #4,d0
  2397. P50_arp3
  2398.     add    d0,d0
  2399.     add    P50_Note(a5),d0
  2400.     move    P50_periods(pc,d0),6(a4)
  2401.     bra    P50_contfxdone
  2402.     endc
  2403.  
  2404. P50_periods
  2405.     ifne    P50_ft
  2406.     incbin    periodtable
  2407.     else
  2408.     incbin    periods.nft
  2409.     endc
  2410.  
  2411.     ifne    P50_vs
  2412. P50_volslide
  2413.     move.b    P50_Info(a5),d0
  2414.     sub.b    d0,P50_Volume+1(a5)
  2415.     bpl.b    .test
  2416.     clr    P50_Volume(a5)
  2417.     ifeq    fade
  2418.     clr    8(a4)
  2419.     else
  2420.     clr    P50_Shadow(a5)
  2421.     endc
  2422.     bra    P50_contfxdone
  2423. .test    moveq    #64,d0
  2424.     cmp    P50_Volume(a5),d0
  2425.     bge.b    .ncs
  2426.     move    d0,P50_Volume(a5)
  2427.     ifeq    fade
  2428.     move    d0,8(a4)
  2429.     else
  2430.     move    d0,P50_Shadow(a5)
  2431.     endc
  2432.     bra.b    P50_contfxdone
  2433. .ncs    ifeq    fade
  2434.     move    P50_Volume(a5),8(a4)
  2435.     else
  2436.     move    P50_Volume(a5),P50_Shadow(a5)
  2437.     endc
  2438.     bra.b    P50_contfxdone
  2439.     endc
  2440.  
  2441.     ifne    P50_tpvs
  2442. P50_tpochvslide
  2443.     move.b    P50_Info(a5),d0
  2444.     sub.b    d0,P50_Volume+1(a5)
  2445.     bpl.b    .test
  2446.     clr    P50_Volume(a5)
  2447.     ifeq    fade
  2448.     clr    8(a4)
  2449.     else
  2450.     clr    P50_Shadow(a5)
  2451.     endc
  2452.     bra.b    P50_toneport
  2453. .test    moveq    #64,d0
  2454.     cmp    P50_Volume(a5),d0
  2455.     bge.b    .ncs
  2456.     move    d0,P50_Volume(a5)
  2457. .ncs    ifeq    fade
  2458.     move    P50_Volume(a5),8(a4)
  2459.     else
  2460.     move    P50_Volume(a5),P50_Shadow(a5)
  2461.     endc
  2462.     endc
  2463.  
  2464.     ifne    P50_tp
  2465. P50_toneport
  2466.     move    P50_ToPeriod(a5),d0
  2467.     beq.b    P50_contfxdone
  2468.     move    P50_TPSpeed(a5),d1
  2469.     cmp    P50_Period(a5),d0
  2470.     blt.b    .topoup
  2471.  
  2472.     add    d1,P50_Period(a5)
  2473.     cmp    P50_Period(a5),d0
  2474.     bgt.b    P50_toposetper
  2475.     move    d0,P50_Period(a5)
  2476.     clr    P50_ToPeriod(a5)
  2477.     move    d0,6(a4)
  2478.     bra.b    P50_contfxdone
  2479.  
  2480. .topoup
  2481.     sub    d1,P50_Period(a5)
  2482.     cmp    P50_Period(a5),d0
  2483.     blt.b    P50_toposetper
  2484.     move    d0,P50_Period(a5)
  2485.     clr    P50_ToPeriod(a5)
  2486. P50_toposetper
  2487.     move    P50_Period(a5),6(a4)
  2488.     else
  2489.     nop
  2490.     endc
  2491.  
  2492. P50_contfxdone
  2493.     add.l    d6,a5
  2494.     add.l    d7,a4
  2495.     dbf    d5,P50_lopas
  2496.  
  2497.     cmp    P50_speed2(pc),d4
  2498.     beq.b    P50_preplay
  2499.     rts
  2500.  
  2501.     ifne    P50_pu
  2502. P50_portup
  2503.     moveq    #0,D0
  2504.     move.b    P50_Info(a5),d0
  2505.     sub    d0,P50_Period(a5)
  2506.     moveq    #113,d0
  2507.     cmp    P50_Period(a5),d0
  2508.     ble.b    .skip
  2509.     move    d0,P50_Period(a5)
  2510.     move    d0,6(a4)
  2511.     bra.b    P50_contfxdone
  2512. .skip
  2513.     move    P50_Period(a5),6(a4)
  2514.     bra.b    P50_contfxdone
  2515.     endc
  2516.  
  2517.     ifne    P50_pd
  2518. P50_portdwn
  2519.     moveq    #0,d0
  2520.     move.b    P50_Info(a5),d0
  2521.     add    d0,P50_Period(a5)
  2522.     cmp    #856,P50_Period(a5)
  2523.     ble.b    .skip
  2524.     move    #856,d0
  2525.     move    d0,P50_Period(a5)
  2526.     move    d0,6(a4)
  2527.     bra.b    P50_contfxdone
  2528. .skip
  2529.     move    P50_Period(a5),6(a4)
  2530.     bra.b    P50_contfxdone
  2531.     endc
  2532.  
  2533. P50_preplay
  2534.     ifne    P50_pde
  2535.     tst    P50_pdelay(a3)
  2536.     beq.b    .djdj
  2537.     rts
  2538. .djdj
  2539.     endc
  2540.  
  2541.     lea    P50_temp0(pc),a5
  2542.     lea    P50_Samples-16(pc),a0
  2543.  
  2544.     moveq    #channels-1,d5
  2545. P50_loaps
  2546.     ifne    P50_pl
  2547.     move.l    (a5),P50_TData(a5)
  2548.     move.l    P50_ChaPos(a5),P50_TChaPos(a5)
  2549.     move.l    P50_TempPos(a5),P50_TTempPos(a5)
  2550.     move    P50_TempLen(a5),P50_TTempLen(a5)
  2551.     endc
  2552.  
  2553.     tst.b    P50_Pack(a5)
  2554.     beq.b    P50_takeone
  2555.     bmi.b    .keepsame
  2556.  
  2557.     subq.b    #1,P50_Pack(a5)
  2558.     clr    P50_OnOff(a5)
  2559.     add.l    d6,a5
  2560.     dbf    d5,P50_loaps
  2561.     rts
  2562.  
  2563. .keepsame
  2564.     addq.b    #1,P50_Pack(a5)
  2565.     bra.b    P50_dko
  2566.  
  2567. P50_takeone
  2568.     tst.b    P50_TempLen+1(a5)
  2569.     beq.b    P50_takenorm
  2570.  
  2571.     subq.b    #1,P50_TempLen+1(a5)
  2572.     move.l    P50_TempPos(a5),a2
  2573.  
  2574. P50_jedi
  2575.     move.l    (a5),P50_TData(a5)
  2576.     move.b    (a2)+,(a5)
  2577.     bpl.b    P50_normal
  2578.     not.b    (a5)+
  2579.     move.b    (a2)+,(a5)+
  2580.     move.b    (a2)+,(a5)+
  2581.     move.b    (a2)+,(a5)+
  2582.     subq.l    #4,a5
  2583.     move.l    a2,P50_TempPos(a5)
  2584.     bra.b    P50_dko
  2585.     
  2586. P50_normal
  2587.     move.b    (a2)+,1(a5)
  2588.     move.b    (a2)+,2(a5)
  2589.     move.l    a2,P50_TempPos(a5)
  2590.     bra.b    P50_dko
  2591.  
  2592. P50_takenorm
  2593.     move.l    P50_ChaPos(a5),a2
  2594.     move.b    (a2)+,(a5)
  2595.     bmi.b    P50_packed
  2596.     move.b    (a2)+,1(a5)
  2597.     move.b    (a2)+,2(a5)
  2598.     move.l    a2,P50_ChaPos(a5)
  2599.     bra.b    P50_dko
  2600.  
  2601. P50_kuiskus
  2602.     move.b    (a2)+,P50_TempLen+1(a5)
  2603.     moveq    #0,d0
  2604.     move.b    (a2)+,d0
  2605.     lsl    #8,d0
  2606.     move.b    (a2)+,d0
  2607.  
  2608.     move.l    a2,P50_ChaPos(a5)
  2609.     sub.l    d0,a2
  2610.     bra.b    P50_jedi
  2611.  
  2612. P50_packed
  2613.     cmp.b    #$80,(a5)
  2614.     beq.b    P50_kuiskus
  2615.     not.b    (a5)+
  2616.     move.b    (a2)+,(a5)+
  2617.     move.b    (a2)+,(a5)+
  2618.     move.b    (a2)+,(a5)+
  2619.     subq.l    #4,a5
  2620.     move.l    a2,P50_ChaPos(a5)
  2621.  
  2622. P50_dko    st    P50_OnOff(a5)
  2623.     move    (a5),d0
  2624.     and    #$1f0,d0
  2625.     beq.b    .koto
  2626.     lea    (a0,d0),a1
  2627.     move.l    a1,P50_Sample(a5)
  2628.     ifne    P50_ft
  2629.     move.l    P50_SampleVolume(a1),P50_Volume(a5)
  2630.     else
  2631.     move    P50_SampleVolume(a1),P50_Volume(a5)
  2632.     endc
  2633.  
  2634. .koto
  2635.     add.l    d6,a5
  2636.     dbf    d5,P50_loaps
  2637.     rts
  2638.  
  2639. P50_playtime
  2640.     clr    (a3)
  2641.     ifne    P50_pde
  2642.     tst    P50_pdelay(a3)
  2643.     beq.b    .djdj
  2644.     subq    #1,P50_pdelay(a3)
  2645.     bra    P50_delay
  2646. .djdj
  2647.     endc
  2648.  
  2649.     tst    P50_speedis1(a3)
  2650.     beq.b    .mo
  2651.     bsr    P50_preplay
  2652.  
  2653. .mo    lea    P50_temp0(pc),a5
  2654.     lea    $a0(a6),a4
  2655.  
  2656.     ifne    system
  2657.     moveq    #1,d4
  2658.     move    d4,P50_server(a3)
  2659.     move.l    P50_craddr+4(pc),a1
  2660.     move.b    #$4a,(a1)
  2661.     move.b    d4,$100(a1)
  2662.     else
  2663.     lea    P50_dmason(pc),a1
  2664.     move.l    P50_vektori(pc),